1
wpf mvvm 프로젝트에서 작업 중입니다. 사용자 정의 컨트롤에서 Observable 컬렉션의 데이터에 바인딩 된 Devexpress에서 DataGridControl 있습니다.ObservablleCollection에서 MultiValueConverter 읽기
<xcdg:DataGridControl x:Name="DataGridName" HorizontalAlignment="left" VerticalAlignment="Stretch"
AutoCreateColumns="False"
ItemsSource="{Binding ViewModel.Items}"
ItemScrollingBehavior="Immediate" SynchronizeCurrent="True" TabIndex="69" >
<xcdg:DataGridControl.Columns >
<xcdg:Column FieldName="Name" AllowSort="False" Title="Name" ShowInColumnChooser="False" />
</xcdg:DataGridControl.Columns>
</xcdg:DataGridControl>
Observable 컬렉션의 클래스는 Name (문자열) 및 IsVerified (부울)를 포함합니다.
private ObservableCollection<myData> _items = new ObservableCollection<myData>();
public ObservableCollection<myData> Items
{
get { return _items; }
set { _items = value; }
}
public class myData
{
public string Name { get; set; }
public bool IsVerfied { get; set; }
}
나는 또한 내가 IsVerfied의 값이 false 인 경우 데이터 그리드 위의 오류 메시지를 표시하는 데 사용하는 TextBlock이 있습니다. 나는 컬렉션에서 IsVerfied 값을 보내 싶습니다
<TextBlock Name="textBlockErrrMessage" Foreground="IndianRed">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource MultiValueConverter}">
<Binding Path="DataContext.IsVerified" RelativeSource="{RelativeSource AncestorType=xcdg:DataRow}" ElementName="DataGridName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
(나는 같은 일을하고있는 중이 야하지만 난 MultiValueConverter를 선택하는 이유는 다른 제어 즉 있도록)는 multivalueconverter있는에 내가 계획이 작업을 수행하려면 메시지를 반환하십시오. 내 문제는 Observablecollection에서 IsVerfied 값을 읽도록 MultiBinding에서 바인딩을 설정하는 방법입니다. 이 특정 라인은 제가 생각하는 것은, 당신이 RelativeSource 또는 ElementName을 중 하나를 사용하려는 바인딩에서 컬렉션 값을
<Binding
Path="DataContext.IsVerified"
RelativeSource="{RelativeSource AncestorType=xcdg:DataRow}"
ElementName="DataGridName" />
이 텍스트 블록이 데이터 그리드에 비해 상대적으로 어디에 배치되었는지는 알려주지 않았습니다. – Aybe
바인딩을 가져 오는 Textblock이 다른 usercontrol에 있습니다. – ZoHen
당신은'DataContext.IsVerified'에 바인딩하고 있습니다 만, 데이터 컨텍스트가'myData'의 인스턴스라고 확신합니까? 또한 VS에서 출력 창을 확인하여 바인딩 오류를 발견하십시오. – Aybe