繁体   English   中英

绑定到另一个WPF类中的属性

[英]Binding to a property in another class WPF

我是WPF的新手,我在winforms中绑定了数据,但是我要在这里尝试将文本框绑定到属性。

我只是想将我的选项类绑定到各种控件,我当前想绑定的是AppCliOptions.CLIPath

我首先要说的是,我现在已经待了几天,花了一个小时左右的时间来找出问题所在。 但是,我还没有找到与我要执行的操作相关的任何内容,也许只是忽略了它,或者仍然没有WPF和xaml,我敢肯定这很简单。

我确实看到有人说您不能绑定到静态类,但是我的类不是静态的,只是我对实例的引用是静态的。

我有一个静态单例类,这是一个示例。

public abstract class AppOptionsBase<T> : INotifyPropertyChanged where T : AppOptionsBase<T>, new()
{
    protected static T instance = new T();

    public event PropertyChangedEventHandler PropertyChanged;

    public static T Instance => instance;

    protected AppOptionsBase() { }
    protected void OnPropertyChanged(string name)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    }
}
public class AppCliOptions : AppOptionsBase<AppCliOptions>
{
    private string _cliPath;
    public string CLIPath { get => _cliPath; set { _cliPath = value; OnPropertyChanged("CLIPath"); } }
    public AppCliOptions()
    {
        //Set defaults
        CLIPath = @"C:\Path\to\CLI.exe";
    }
}

我的Xaml.cs文件

public static AppCliOptions CLIOptions => AppCliOptions.Instance;

我的.xaml文件

<TextBox Grid.Row="1" Grid.Column="0" DataContext="{Binding CLIOptions}" Text="{Binding Path=CLIPath}" BorderBrush="Black"/>

如果我通过代码调用CLIOptions.CLIPath,则文本框文本始终为空白,我将获得预期的默认值。 在完成所有阅读之后,我尝试了数十种不同的方法来尝试对此进行绑定,但是我似乎无法使其正常工作。

我通过不尝试在xaml中设置上下文来使其工作。

窗口加载事件

txtCLIPath.DataContext = CLIOptions;

XAML

<TextBox x:Name="txtCLIPath" Grid.Row="1" Grid.Column="0" Text="{Binding CLIPath}" BorderBrush="Black"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM