gpt4 book ai didi

wpf - 如何对 ColumnDefinition 的 Width 或 RowDefinition 的 Height 进行数据绑定(bind)?

转载 作者:行者123 更新时间:2023-12-03 08:35:33 25 4
gpt4 key购买 nike

在 WPF 的 View-Model-ViewModel 模式下,我试图对网格控件的各种定义的高度和宽度进行数据绑定(bind),以便在使用 GridSplitter 后存储用户设置的值。但是,正常模式似乎不适用于这些特定属性。

注意:我将此作为引用问题发布,因为谷歌让我失望了,我不得不自己解决这个问题。我自己的答案要遵循。

最佳答案

我发现了一些陷阱:

  • 尽管它在 XAML 中可能看起来像 double ,但 *Definition 的高度或宽度的实际值是一个“GridLength”结构。
  • GridLength 的所有属性都是只读的,每次更改时都必须创建一个新属性。
  • 与 WPF 中的所有其他属性不同,Width 和 Height 不会将它们的数据绑定(bind)模式默认为“TwoWay”,您必须手动设置它。

  • 因此,我使用了以下代码:
    private GridLength myHorizontalInputRegionSize = new GridLength(0, GridUnitType.Auto)
    public GridLength HorizontalInputRegionSize
    {
    get
    {
    // If not yet set, get the starting value from the DataModel
    if (myHorizontalInputRegionSize.IsAuto)
    myHorizontalInputRegionSize = new GridLength(ConnectionTabDefaultUIOptions.HorizontalInputRegionSize, GridUnitType.Pixel);
    return myHorizontalInputRegionSize;
    }
    set
    {
    myHorizontalInputRegionSize = value;
    if (ConnectionTabDefaultUIOptions.HorizontalInputRegionSize != myHorizontalInputRegionSize.Value)
    {
    // Set the value in the DataModel
    ConnectionTabDefaultUIOptions.HorizontalInputRegionSize = value.Value;
    }
    OnPropertyChanged("HorizontalInputRegionSize");
    }
    }

    和 XAML:
    <Grid.RowDefinitions>
    <RowDefinition Height="*" MinHeight="100" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="{Binding Path=HorizontalInputRegionSize,Mode=TwoWay}" MinHeight="50" />
    </Grid.RowDefinitions>

    关于wpf - 如何对 ColumnDefinition 的 Width 或 RowDefinition 的 Height 进行数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/147908/

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