XAML 自订UserControl相依性属性系结

x9ybnkn6  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(177)

我创建了一个自定义的UserControl,其中包含以下控件

<TextBlock Text="{Binding NameUtility}" />
        <TextBlock Text="{Binding TotalCost}" "/>

在代码中,两个绑定都声明如下

public static readonly DependencyProperty SetNameUtilityProperty =
        DependencyProperty.Register(
            nameof(NameUtility),
            typeof(string),
            typeof(SummaryInfo));

    public string NameUtility
    {
        get { return (string)GetValue(SetNameUtilityProperty); }
        set { SetValue(SetNameUtilityProperty, value); }
    }

    public static readonly DependencyProperty SetTotalCostProperty =
        DependencyProperty.Register(
            nameof(TotalCost),
            typeof(string),
            typeof(SummaryInfo));

    public string TotalCost
    {
        get { return (string)GetValue(SetTotalCostProperty); }
        set { SetValue(SetTotalCostProperty, value);  }
    }

上述控件在另一个控件XAML中使用为

<Utilities:SummaryInfo NameUtility="GAS" TotalCost="{Binding TotalGasEuro}"/>

绑定变量TotalGasEuro正确声明如下

private string _totalGasEuro;
    public string TotalGasEuro { get => _totalGasEuro; set { _totalGasEuro = value; NotifyPropertyChanged(); } }

运行应用程序时,GAS会显示出来,而在运行时更新的绑定值不会显示出来。(我从代码中删除了上面的图形部分)

krcsximq

krcsximq1#

我发现了我的问题。看起来要有一个绑定作为我试图实现的,你需要指定相对源。
在我的示例中,当从XAML调用自定义控件时:

<Utilities:SummaryInfo NameUtility="GAS" TotalCost="{Binding TotalGasEuro, RelativeSource={RelativeSource AncestorType=UserControl}}"/>

相关问题