Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式修改网格中元素的宽度,当在XAML中使用*_C#_Wpf_Xaml - Fatal编程技术网

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"]);