我需要您的幫助。 我在我的應用程序中使用MVVM設計模式。我有一個組合框我在數據網格中:WPF:屬性綁定不會在運行時更新
<telerik:RadGridView AutoGenerateColumns="False" Name="rgvData" ItemsSource="{Binding Data}">
<telerik:RadGridView.Columns>
<telerik:GridViewColumn Header="Department">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadComboBox
ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}},Path=DataContext.Departments}"
SelectedValue="{Binding DEP_LINK,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="LINK"
DisplayMemberPath="TITLE">
</telerik:RadComboBox>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
數據是的一個ObservableCollection。 部門是DEPARTMENTS的ObservableCollection。 這兩個類都是來自SQL Server的實體。
現在我想根據DATA類的IsDepartmentUsed屬性對組合框着色。下面是一個風格:
<telerik:RadComboBox.Style>
<Style TargetType="{x:Type telerik:RadComboBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsDepartmentUsed}" Value="False">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsDepartmentUsed}" Value="True">
<Setter Property="Background" Value="Transparent"/>
</DataTrigger>
</Style.Triggers>
</Style>
</telerik:RadComboBox.Style>
時,剛打開的窗口,它工作正常。但是如果我改變組合框的值,它不會改變顏色!
這裏怎麼IsDepartmentUsed財產的樣子:
public partial class DATA
{
public bool IsDepartmentUsed
{
get
{
if (this.DEPARTMENTS.ISUSED != null)
{
return Convert.ToBoolean(this.DEPARTMENTS.ISUSED);
}
return false;
}
}
}
謝謝,瑞秋!這與我想要的非常接近。一些觀點:** DEPARTMENTS **是自動生成的實體。部門是** ObservableCollection **。與**數據**一樣的東西。所以**數據**類沒有** ObservableCollection **,但有** DEPARTMENTS **類代替。我已經添加了:public void UpdateIsDepartmentUsedProperty(){OnPropertyChanged(「IsDepartmentUsed」); }在** DATA **類中。如果我從ViewModel調用它,一切正常,並且該屬性更新成功。但我認爲它是某種「骯髒」的代碼。 –