TreeView
과 Grid
사이의 일종의 관계를 만들어야하는 WPF 응용 프로그램 MVVM 패턴에서 작업하고 있습니다. 아이디어는 id가 treenode id 인 행을 강조 표시하는 것입니다. 강조 표시 색 속성을 호출 : C# - WPF highlighted DataGrid의 선택된 행
public Brush DisplayColor
{
set
{
_displayColor = value;
NotifyPropertyChanged("DisplayColor");
}
get { return _displayColor; }
}
선택의 TreeNode는
// 그리드에서 아이디와 일치하는 검색
public void SearchGrid(int id, ObservableCollection<MessageFieldViewModel> msgField)
{
if (msgField.Any())
DisplayColor = msgField.Last().Id == id ? Brushes.CadetBlue : Brushes.Black;
}
XAML
private MessageElementViewModel _selectedMessageElement;
public MessageElementViewModel SelectedMessageElement
{
set
{
if (_selectedMessageElement == value) return;
this._selectedMessageElement = value;
SearchGrid(value.Id, messageFields);
}
get
{
return this._selectedMessageElement;
}
}
을 value.id 일치하는 ID. 데이터 그리드
트 리뷰 : 트 리뷰 선택 항목 뒤에
<TreeView Margin="644,137,6,6" Grid.RowSpan="2" ItemsSource="{Binding MessageElements[0].Children[0].Children, Mode=TwoWay}"
SelectedItemChanged="TreeView_OnSelectedItemChanged"
SelectedValuePath="Id">
코드;
readonly MainWindowModel _mainWindowModel = new MainWindowModel();
private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
if (_mainWindowModel != null)
_mainWindowModel.SelectedMessageElement = (MessageElementViewModel)e.NewValue;
}
편집 :
<DataGrid Name="Datagrid" ItemsSource="{Binding MessageFields}" Margin="4,0,380,6" Grid.Row="2" AutoGenerateColumns="False" IsReadOnly="True" SelectedValue="{Binding SelectedMessageField}"
AlternatingRowBackground ="{Binding Path=DisplayColor}" RowBackground="{Binding Path=DisplayColor}" Background="CadetBlue">
<DataGrid.Columns >
<DataGridTextColumn Header="ID" Binding="{Binding Id}" Width="*" /> <!--Foreground="{Binding Path=DisplayColor}-->
<DataGridTextColumn Header="Code" Binding="{Binding Code}" Width="*" />
<DataGridTextColumn Header="Field Name" Binding="{Binding Name}" Width="*" />
<DataGridTextColumn Header="Position" Binding="{Binding Position}" Width="*" />
<DataGridTextColumn Header="Length" Binding="{Binding Length}" Width="*" />
</DataGrid.Columns>
왜 내 표시 색 속성 ID를 일치 작동하지 않습니다이다?
어디서나 'DisplayColor' 속성에 바인딩되어 있지 않습니다. 전체 XAML을 게시하십시오. 또한 검색은'for'가 아닌'Linq'이어야합니다. –
원래의 게시물을 업데이트하여 displayColor 호출을 표시했습니다. –
@HighCore linq로 업데이트했지만 아무 것도 작동하지 않습니다. 내 원래 게시물을 업데이 트 –