1
首先,我的View和ViewModel連接正確。但我無法通過DataTemplate綁定。DataTemplate中的命令不叫
所以,我有DataTemplate
在Windows.Resources
:
<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
:
<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>
在我
ViewModel
我:
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
它在我看來我做的一切都是正確的。
我錯過了什麼?