0

我的 MyUserControl 类型的应用程序中有三个控件。MyUserControl 包含一个标签,我想将其绑定到位于应用程序设置中的字符串。MyUserControl 的三个实例中的每一个在应用程序设置中都有自己的字符串,分别名为 Description1、Description2 和 Description3。

问题是我无法将 UserControl 中的绑定路径设置为位于应用程序设置中的字符串的名称,因为这样 MyUserControl 的每个实例都会绑定到同一个字符串。

我已经设法让某些东西工作了,但正如我在使用 WPF 时了解到的那样,我提出的解决方案从来都不是做事的最佳方法:),所以我想知道是否有更好的方法来做到这一点?以下是我现在使用的相关代码:

MyUserControl.xaml.cs

public partial class MyUserControl : UserControl
{
    public static DependencyProperty DescriptionProperty = DependencyProperty.Register("Description", typeof(string), typeof(MyUserControl));

    public string Description { get { return (string)GetValue(DescriptionProperty); } set { SetValue(DescriptionProperty, value); } }
}

MyUserControl.xaml

<UserControl x:Class="MyApplication.MyUserControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:local="clr-namespace:MyApplication"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300" Name="myUserControl">

...

<Label Content="{Binding ElementName=myUserControl, Path=Description, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,6" />

主窗口.xaml

xmlns:properties="clr-namespace:MyApplication.Properties"

...

<local:MyUserControl Description="{Binding Source={x:Static properties:Settings.Default}, Path=Description1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" x:Name="myUserControl1" DataContext="{Binding ElementName=MainWindow, Path=Params}" />
<local:MyUserControl Description="{Binding Source={x:Static properties:Settings.Default}, Path=Description2, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" x:Name="myUserControl2" DataContext="{Binding ElementName=MainWindow, Path=Params}" />
4

0 回答 0