簡體   English   中英

如何綁定到視圖中的屬性而不綁定到ViewModel中?

[英]How to bind to a property in view but not in viewmodel?

我有一些控件,其值在視圖中使用在視圖模型中沒有任何關系。 我想將控件綁定到視圖中的屬性,而不必將其復制到視圖模型中。

根據類似問題的答復 ,有可能,我正在使用以下代碼來實現這一目標。 但是,當我沒有看到預期的結果時,因此我猜測我無意中綁定了旗桿,而不是預期的屬性。

XAML

<DatePicker x:Name="Uno"
            SelectedDate="{Binding StartDate, Source={x:Static Application.Current}}"
            SelectedDateChanged="DatePicker_OnSelectedDateChanged" />
<DatePicker x:Name="Due"
            SelectedDate="{Binding StartDate, Source={x:Static Application.Current}}"
            SelectedDateChanged="DatePicker_OnSelectedDateChanged" />

C#

public partial class ViewWindow : Window
{
  public static DateTime StartDate { get; set; }
  ...
}

我的代碼中缺少什么? 還是我誤解了答復並以錯誤的方式進行處理?

這個:

x:Static Application.Current

嘗試將Application.Current設置為特定綁定表達式的綁定源。 但是,顯然,您不想訪問諸如Application.Current.StartDate類的東西(我想,您的App類未定義此類屬性)。

實際上,我從您的屬性定義中錯過了static關鍵字。
如果您使用的是.NET 4.5或更高版本,則可以通過以下方式為靜態屬性編寫綁定路徑:

<DatePicker x:Name="Uno"
            SelectedDate="{Binding Path=(local:ViewWindow.StartDate)}"
            SelectedDateChanged="DatePicker_OnSelectedDateChanged" />

local這里是一個命名空間,在其中定義了ViewWindow
否則,請使用RelativeSource標記擴展(當該屬性是instance時,這也適用):

<DatePicker x:Name="Uno"
            SelectedDate="{Binding StartDate, 
              RelativeSource={RelativeSource Mode=FindAncestor, 
                AncestorType={x:Type Window}}}"
            SelectedDateChanged="DatePicker_OnSelectedDateChanged" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM