亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

綁定到靜態屬性

綁定到靜態屬性

綁定到靜態屬性我很難將一個簡單的靜態字符串屬性綁定到文本框。下面是具有靜態屬性的類:public class VersionManager{     private static string filterString;     public static string FilterString     {         get { return filterString; }         set { filterString = value; }     }}在我的XAML中,我只想將這個靜態屬性綁定到一個文本框:<TextBox>     <TextBox.Text>         <Binding Source="{x:Static local:VersionManager.FilterString}"/>     </TextBox.Text></TextBox>所有東西都會編譯,但是在運行時,我得到了以下異常:無法將屬性“Source”中的值轉換為“System.Windows.Markup.StaticExtenence”類型的對象。在標記文件‘BurnDisk;component/selectversionpagefunction.xaml’第57行第29位的對象‘System.Windows.Data.Binding’處出錯。知道我做錯什么了嗎?
查看完整描述

3 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

如果綁定需要雙向,則必須提供路徑.如果類不是靜態的,那么可以對靜態屬性進行雙向綁定:在資源中聲明類的虛擬實例,并使用它作為綁定的源。

<Window.Resources>
    <local:VersionManager x:Key="versionManager"/></Window.Resources>...
    <TextBox Text="{Binding Source={StaticResource versionManager}, Path=FilterString}"/>


查看完整回答
反對 回復 2019-07-04
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

你不能綁定到這樣的靜電。綁定基礎結構無法獲得更新通知,因為沒有DependencyObject(或實現INotifyPropertyChanged)參與。

如果該值沒有改變,只需放棄綁定并使用x:Static直接在Text財產。定義app下面是VersionManager類的命名空間(和程序集)位置。

<TextBox Text="{x:Static app:VersionManager.FilterString}" />

如果值確實發生了變化,我建議創建一個單例來包含該值并綁定到該值。

單身人士的一個例子:

public class VersionManager : DependencyObject {
    public static readonly DependencyProperty FilterStringProperty =
        DependencyProperty.Register( "FilterString", typeof( string ),
        typeof( VersionManager ), new UIPropertyMetadata( "no version!" ) );
    public string FilterString {
        get { return (string) GetValue( FilterStringProperty ); }
        set { SetValue( FilterStringProperty, value ); }
    }

    public static VersionManager Instance { get; private set; }

    static VersionManager() {
        Instance = new VersionManager();
    }}
<TextBox Text="{Binding Source={x:Static local:VersionManager.Instance},
                        Path=FilterString}"/>


查看完整回答
反對 回復 2019-07-04
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

在.NET 4.5中,可以綁定到靜態屬性,讀更多

可以使用靜態屬性作為數據綁定的源。如果引發靜態事件,數據綁定引擎將識別屬性值何時更改。例如,如果類SomeClass定義了一個名為MyProperty的靜態屬性,SomeClass可以定義一個在MyProperty值更改時引發的靜態事件。靜態事件可以使用以下任一簽名:

public static event EventHandler MyPropertyChanged; 
public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

注意,在第一個例子中,類公開了一個名為PropertyNameChanged的靜態事件,該事件將EventArgs傳遞給事件處理程序。在第二個例子中,類公開一個名為StaticPropertyChanged的靜態事件,該事件將PropertyChangedEventArgs傳遞給事件處理程序。實現靜態屬性的類可以選擇使用任一方法引發屬性更改通知。


查看完整回答
反對 回復 2019-07-04
  • 3 回答
  • 0 關注
  • 642 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號