C# 如何以编程方式修改网格中元素的宽度,当在XAML中使用*
我定义了两个带分隔符的列,如下所示:C# 如何以编程方式修改网格中元素的宽度,当在XAML中使用*,c#,wpf,xaml,C#,Wpf,Xaml,我定义了两个带分隔符的列,如下所示: <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="6"/> <ColumnDefinition Width="2*"/> </Grid.ColumnDefinitions> <ScrollViewer Name
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="6"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<ScrollViewer Name="sideBar" Margin="{StaticResource SplitLeft}" SizeChanged="ScrollViewer_SizeChanged">
<StackPanel>
<TextBlock Text="LEFT CONTENT" Style="{StaticResource Heading2}" />
<TextBlock Text="" Name="ShowThings"/>
</StackPanel>
</ScrollViewer>
<GridSplitter Grid.Column="1" />
<ScrollViewer Name="ListPage" Grid.Column="2 " Margin="{StaticResource SplitRight}" SizeChanged="ScrollViewer_SizeChanged">
<StackPanel>
<TextBlock Text="RIGHT CONTENT" Style="{StaticResource Heading2}" />
<TextBlock Text="Content goes here" />
</StackPanel>
</ScrollViewer>
在窗口构造函数中加载设置并设置值
sideBar.Width = (double)Properties.Settings.Default["sideBarWidth"];
但这是行不通的。有人能帮我找出这个问题吗?我确信这是一个重复的问题,但我不知道要搜索什么。如果取决于列表中给定的大小,那么设置
侧边栏的宽度是没有意义的。尝试设置列定义。宽度:
// 0 = first column
grid.ColumnDefinitions[0].Width = new GridLength((double)Properties.Settings.Default["sideBarWidth"]);
谢谢你的回复。这是有道理的。但接下来的问题是。grid.ColumnDefinitions[0]。宽度为System.window.GridLength类型。如何将双倍宽度(我猜是像素)转换为网格长度。
// 0 = first column
grid.ColumnDefinitions[0].Width = new GridLength((double)Properties.Settings.Default["sideBarWidth"]);