gpt4 book ai didi

c# - 将复选框添加到 UniformGrid

转载 作者:行者123 更新时间:2023-11-30 14:28:00 25 4
gpt4 key购买 nike

我正在尝试将复选框动态添加到 wpf 中的 uniformgrid。但看起来网格没有为它们分配足够的空间,所以它们有点相互重叠。这就是我在后面的代码中添加它们的方式:

foreach (string folder in subfolders)
{
PathCheckBox chk = new PathCheckBox();
chk.Content = new DirectoryInfo(folder).Name;
chk.FullPath = folder;
chk.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
chk.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;

unfiformGridSubfolders.Children.Add(chk);
}

这就是我的 XAML 的外观(我将 uniformgrid 放在滚动查看器中)

<ScrollViewer Grid.Column="1" Grid.RowSpan="3">
<UniformGrid x:Name="unfiformGridSubfolders" Grid.Column="1" Grid.Row="0" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
</ScrollViewer>

这是它在程序中的样子:

enter image description here

我只是希望每个复选框都有足够的空间,以便可以完整读取内容。

最佳答案

您是否必须动态添加 UI 元素?您不能只预定义您的 CheckBox 模板并添加 CheckBox.Content 吗?如果可能,则定义一个包含您的 CheckBox.ContentObservableCollection,如下所示:

public ObservableCollection<string> SubfolderNames { get; set; }

然后定义一个 ItemsControl 并将它的 ItemsSource 绑定(bind)到您的集合:

    <ItemsControl Grid.Row="0" x:Name="gridSubfolders" ItemsSource="{Binding SubfolderNames}" Grid.IsSharedSizeScope="True">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel></WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="50" />
</Grid.ColumnDefinitions>
<Border Margin="5" BorderThickness="1" BorderBrush="Black">
<CheckBox Content="{Binding}"/>
</Border>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

这样,所有项目都具有相同的宽度,因为它们共享一个尺寸组,此外,因为它们的尺寸是 Auto,它们的尺寸也会最大 CheckBox.Content .

关于c# - 将复选框添加到 UniformGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30557660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com