【发布时间】:2019-06-05 13:14:54
【问题描述】:
我有一个包含 18 列的 WPF DataGrid,每列上方都有一个 TextBox,因此我可以过滤该列。
每个TextBox 将Width 绑定到列的ActualWidth。
<StackPanel Grid.Row="0" Orientation="Horizontal">
<TextBox Width="{Binding Path=ActualWidth, ElementName=Column1}"
Text="{Binding FilterFirstName}"/>
<TextBox Width="{Binding Path=ActualWidth, ElementName=Column2}"
Text="{Binding FilterLastName}"/>
<TextBox Width="{Binding Path=ActualWidth, ElementName=Column3}"
Text="{Binding FilterAge}"/>
<!-- 15 more -->
</StackPanel>
<DataGrid x:Name="dataGridUsers" Grid.Row="1"
ItemsSource="{Binding Users}">
<DataGrid.Columns>
<DataGridTextColumn x:Name="Column1" Width="*"
Binding="{Binding FirstName}"/>
<DataGridTextColumn x:Name="Column2" Width="*"
Binding="{Binding LastName}"/>
<DataGridTextColumn x:Name="Column3" Width="*"
Binding="{Binding Age}"/>
<!-- 15 more -->
</DataGrid.Columns>
</DataGrid>
我知道我可以像这样将TextBox Text 绑定到List<string>:
<TextBox Width="{Binding Path=ActualWidth, ElementName=Column1}"
Text="{Binding Filters[0]}"/>
<TextBox Width="{Binding Path=ActualWidth, ElementName=Column2}"
Text="{Binding Filters[1]}"/>
<TextBox Width="{Binding Path=ActualWidth, ElementName=Column3}"
Text="{Binding Filters[2]}"/>
我想将TextBox 的Width 绑定到该列的ActualWidth,如下所示:
<TextBox Width="{Binding Path=ActualWidth, Source=dataGridUsers.Columns[0]}"
Text="{Binding Filters[0]}"/>
<TextBox Width="{Binding Path=ActualWidth, Source=dataGridUsers.Columns[1]}"
Text="{Binding Filters[1]}"/>
<TextBox Width="{Binding Path=ActualWidth, Source=dataGridUsers.Columns[2]}"
Text="{Binding Filters[2]}"/>
因为那时我可以使用ItemsControl 而不是StackPanel,但是这样不行。
还有其他方法可以实现吗?
【问题讨论】:
标签: c# wpf mvvm data-binding datagrid