Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.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数据模板WPF的访问权限_C#_Wpf - Fatal编程技术网

C# 获取对窗口大小xaml数据模板WPF的访问权限

C# 获取对窗口大小xaml数据模板WPF的访问权限,c#,wpf,C#,Wpf,现在我有以下xaml- <Window.Resources> <DataTemplate x:Key="MailTemplate"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Path=Date}" Width="150"/> <TextBlock Text="{Binding Path

现在我有以下xaml-

<Window.Resources>
    <DataTemplate x:Key="MailTemplate">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=Date}" Width="150"/>
            <TextBlock Text="{Binding Path=Subject}" Width="300"/>
            <TextBlock Text="{Binding Path=From.DisplayName}" Width="125"/>
        </StackPanel>
    </DataTemplate>
</Window.Resources>

它是列表框项目的模板。 实际的细节并不重要,只是关于宽度属性。
是否有办法访问窗口大小以设置宽度?我不希望宽度保持不变,我希望如果您拉伸窗口,TextBlock能够改变大小。

您可以通过在
TextBlock
元素上不设置任何固定宽度来实现,并使用
网格作为容器,而不是
StackPanel
。例如:

<DataTemplate x:Key="MailTemplate">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="150*" />
            <ColumnDefinition Width="300*" />
            <ColumnDefinition Width="125*" />
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Column="0" Text="{Binding Path=Date}" />
        <TextBlock Grid.Column="1" Text="{Binding Path=Subject}" />
        <TextBlock Grid.Column="2" Text="{Binding Path=From.DisplayName}" />
    </Grid>
</DataTemplate>


除了网格,还有其他面板:UniformGrid、StackPanel、DockPanel、WrapPanel。您甚至可以通过从类派生来使用自定义布局逻辑创建自己的面板。我再说一遍,非常感谢!