我试图在网格中列出很多项目,我不想重复" ColumnDefinition Width = 40"从这里到无穷大,因为我将需要添加更多带有绑定的TextBox。
有什么方法可以将所有列设置为宽度为40,以便我不必列出所有内容? 我尝试过使用UniformGrid,但我无法使其正常工作。
<ListView ItemsSource="{Binding TreeViewData}">
<ListView.Resources>
<DataTemplate
DataType="{x:Type model:Character}">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="40"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Type}" />
<TextBox Grid.Column="1" Text="{Binding MaxHealth}" />
<TextBox Grid.Column="2" Text="{Binding Health}" />
<TextBox Grid.Column="3" Text="{Binding RegenerationSpeed}" />
<CheckBox Grid.Column="4" IsChecked="{Binding Invincible}" Margin="10,3,0,0"/>
</Grid>
</DataTemplate>
</ListView.Resources>
</ListView>
答案 0 :(得分:1)
它可能比它的价值更多,因为你不能直接将一个Style应用于网格的ColumnDefinitions。我可能只是用你的值(40)设置一个资源并使用它。如果您决定将值更改为50或其他值,则至少您只需要将值更改为一个位置。您可以在XAML(在您的ResourceDictionary中,如果您有几个控件等或Window.Resources,无论如何)中这样做:
<Window.Resources>
<GridLength x:Key="stdWidth">40</stdWidth>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{StaticResource stdWidth}" />
</Grid.ColumnDefinitions>
</Grid>