gpt4 book ai didi

c# - WPF-如何监视datagrid selecteditem属性更改

转载 作者:行者123 更新时间:2023-12-03 10:43:20 29 4
gpt4 key购买 nike

我正在创建一个遵循MVVM模式的应用程序(尽我所能),并且使用Prism使其变得更容易。

我有一个 View ,用户可以在其中编辑一个单元格,然后在该单元格中从ComboBox中选择一个值。我想监视所选行的ComboBox值何时更改。例如。值从“Bio”更改为“Pleje”。

我不知道该怎么做。我知道所选项目上存在“PropertyChanged”事件,但是我应该在哪里订阅?由于所选项目为null,因此无法在构造函数中完成。

enter image description here

    <DataGrid Grid.Column="0" Grid.Row="2" AlternationCount="2" AlternatingRowBackground="#cee8ff" CanUserAddRows="False" AutoGenerateColumns="False" ItemsSource="{Binding Path=Familier}" SelectedItem="{Binding ValgtFamilie, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">           
<DataGrid.Columns>
<DataGridTextColumn Header="Cpr" Binding="{Binding Path=CPR}" IsReadOnly="True"/>
<DataGridTextColumn Header="Fornavn" Width="*" Binding="{Binding Path=Fornavn}" IsReadOnly="True"/>
<DataGridTextColumn Header="Efternavn" Width="*" Binding="{Binding Path=Efternavn}" IsReadOnly="True"/>

<DataGridTemplateColumn Header="Forældre Type">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=ForældreTypeKategori}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.ForældreTypeKategorier, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" SelectedItem="{Binding Path=ForældreTypeKategori, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

ViewModel:
 private Familie valgtFamilie;
public Familie ValgtFamilie
{
get { return valgtFamilie; }
set { valgtFamilie = value; SetProperty(ref valgtFamilie, value); }
}

模型:
internal class Familie : BindableBase
{
private string cpr;
public string CPR
{
get { return cpr; }
set { cpr = value; SetProperty(ref cpr, value); }
}

private string fornavn;
public string Fornavn
{
get { return fornavn; }
set { fornavn = value; SetProperty(ref fornavn, value); }
}

private string efternavn;
public string Efternavn
{
get { return efternavn; }
set { efternavn = value; SetProperty(ref efternavn, value); }
}

private ForældreTypeKategori forældreTypeKategori;
public ForældreTypeKategori ForældreTypeKategori
{
get { return forældreTypeKategori; }
set { forældreTypeKategori = value; SetProperty(ref forældreTypeKategori, value); }
}
}

最佳答案

首先,您真的需要知道该属性何时更改吗?大多数时候,我们只是想在验证表单时知道该值,而由于有了DataBinding,我们就拥有了这个值。

现在,让我们假设您确实需要它,它的想法是订阅您对属性的更改。为此,我认为此答案将有所帮助:MVVM in WPF - How to alert ViewModel of changes in Model... or should I?

关于c# - WPF-如何监视datagrid selecteditem属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41482357/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com