1
먼저보기와 ViewModel이 올바르게 연결되었습니다. 하지만 DataTemplate에서 바인딩을 수행 할 수는 없습니다.DataTemplate의 명령이 호출되지 않았습니다.
<Window.Resources>
<DataTemplate x:Key="DataGridHeader">
<DockPanel>
<TextBlock DockPanel.Dock="Top" TextAlignment="Left" Text="{Binding Content, RelativeSource={RelativeSource Mode=TemplatedParent}}" Margin="5"/>
<TextBox DockPanel.Dock="Top" BorderBrush="#3d3d3d" BorderThickness="1" Margin="5" Height="22">
</TextBox>
<Button DockPanel.Dock="Top" Height="30" Command="{Binding DataContext.OnFilterCommand, RelativeSource={RelativeSource AncestorType=Window}}"></Button>
</DockPanel>
</DataTemplate>
</Window.Resources>
을 한 후, 나는 나의 DataGrid
이 :
그래서 나는 Windows.Resources
에 DataTemplate
이
ViewModel
에서
<DataGrid x:Name="DataGridItems"
Grid.Row="1"
EnableRowVirtualization="True"
ItemsSource="{Binding Items, Mode=TwoWay}"
RowHeight="25"
RowHeaderWidth="0"
VerticalContentAlignment="Center"
HorizontalGridLinesBrush="#dddddd"
VerticalGridLinesBrush="#dddddd"
AlternatingRowBackground="#f2f2f2"
AutoGenerateColumns="False"
Background="#cecece"
CanUserAddRows="False">
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.CellStyle>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Padding" Value="0" />
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="#111111"></Setter>
<Setter Property="Background" Value="#cecece" />
<Setter Property="BorderBrush" Value="#111111" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="SeparatorVisibility" Value="Visible"></Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Binding="{Binding Path=Id}" HeaderTemplate="{StaticResource DataGridHeader}" Width="65" />
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" HeaderTemplate="{StaticResource DataGridHeader}" Width="150" />
</DataGrid.Columns>
</DataGrid>
내가 가진 :
private ICommand _onLoadedCommand;
public ICommand OnFilterCommand => _onLoadedCommand ?? (_onLoadedCommand = new DelegateCommand(OnFilter));
private void OnFilter()
{
Debug.WriteLine("Works!");
}
을하고 아무튼 일하지 마! 나는 모든 곳을 보았다. 나는이 기사를 보았다 : http://nosalan.blogspot.com/2013/10/wpf-datagrid-with-filtering-mvvm.html
그리고 나는 모든 것이 정확하다고 생각한다.
무엇이 누락 되었습니까?