Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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# 绑定到另一个类WPF中的属性_C#_.net_Wpf_Xaml - Fatal编程技术网

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

C# 绑定到另一个类WPF中的属性,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我对WPF非常陌生,而且我在winforms中有数据绑定,但我现在要做的就是简单地将文本框绑定到属性 我只是尝试将我的选项类绑定到各种控件,我当前尝试绑定的是AppCliOptions.CLIPath 首先,我想说我已经在这里呆了几天了,每天花一个小时左右的时间试图找出问题所在。然而,我还没有找到任何具体的东西,也许我只是忽略了它,或者我还没有得到WPF和xaml,我相信这是很简单的 我确实看到有人说不能绑定到静态类,但我的类不是静态的,只是我对实例的引用是静态的 我有一个静态单例类,这是一个例

我对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文件

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

文本框文本始终为空,如果通过代码调用CLIOptions.CLIPath,则会获得预期的默认值。
在我读了这么多的书之后,我尝试了几十种不同的方法来尝试和绑定它,但我似乎无法让它工作。

我通过不尝试在xaml中设置上下文来实现它

窗口加载事件

txtCLIPath.DataContext = CLIOptions;
XAML


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