[英]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.