簡體   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