당신의 도움이 필요합니다. 내 응용 프로그램에서 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>
창이 열리면 제대로 작동합니다. 하지만 콤보 상자의 값을 변경하면 색상이 변경되지 않습니다!
이public partial class DATA
{
public bool IsDepartmentUsed
{
get
{
if (this.DEPARTMENTS.ISUSED != null)
{
return Convert.ToBoolean(this.DEPARTMENTS.ISUSED);
}
return false;
}
}
}
감사합니다. Rachel! 이것은 내가 원하는 것에 거의 가깝다. 몇 가지 사항 : ** DEPARTMENTS **는 자동 생성 된 개체입니다. 학과는 ** ObservableCollection **입니다. ** DATA **와 동일합니다. 따라서 ** DATA ** 클래스에는 ** ObservableCollection **이 없지만 대신 ** DEPARTMENTS ** 클래스가 있습니다. 내가 추가했습니다 : 공공 무효 UpdateIsDepartmentUsedProperty() {OnPropertyChanged ("IsDepartmentUsed"); } ** 데이터 ** 클래스. ViewModel에서 호출하면 모든 것이 올바르게 작동하고 속성이 성공적으로 업데이트됩니다. 그러나 나는 어떤 종류의 '더러운'코드라고 생각합니다. –