簡體   English   中英

MVVM:當DataContext不為空時,通過使用DataTemplate將viewmodel(DataContext)綁定到視圖

[英]MVVM: When DataContext is not null by using DataTemplate to bind viewmodel(DataContext) to the view

在主要的XAML中:

<DataTemplate DataType="{x:Type vm:GraphicEditorPropertyViewModel}">
    <views:GraphicEditorPropertyView/>
</DataTemplate>

在類GraphicEditorPropertyView.xaml.cs中

public partial class GraphicEditorPropertyView : UserControl
{
    private bool SecurityLevelBar_MouseCaptured = false;

    public GraphicEditorPropertyView()
    {
        InitializeComponent();

        Int32 pattern = ((GraphicEditorPropertyViewModel)(this.DataContext)).CurrentGraphicEditorVgProperty.Pattern;
        UInt32 frontColor = ((GraphicEditorPropertyViewModel)(this.DataContext)).CurrentGraphicEditorVgProperty.FrontColor;
        UInt32 backColor = ((GraphicEditorPropertyViewModel)(this.DataContext)).CurrentGraphicEditorVgProperty.BackColor;
        ConvertPattern2BrushCanvas convertPattern2BrushCanvas = new ConvertPattern2BrushCanvas(((GraphicEditorPropertyViewModel)(this.DataContext)).Parent.CurrentLibDiagramDesigner);
        Brush brush = convertPattern2BrushCanvas.Convert(new object[] { frontColor, backColor, pattern }, null, null, null) as Brush;

        Selected_Pattern.Fill = brush;
    }

    private void WindowPattern_MouseClick(object sender, RoutedEventArgs e)
    {
        Button button = sender as Button;
        Brush buttonBrush = button.Background;
        Selected_Pattern.Fill = buttonBrush;

        ((GraphicEditorPropertyViewModel)(this.DataContext)).CurrentGraphicEditorVgProperty.Pattern = System.Convert.ToInt32(button.ToolTip.ToString());
    }
}

}

構造函數中的 DataContextnull

函數WindowPattern_MouseClick中的DataContext 不為 null;

為什么?

因為必須設置DataContext 這只是普通財產。

想想將如何設置DataContext的對象上。 首先創建對象(從而運行整個構造函數),然后設置DataContext屬性。

這就是系統在后台執行的操作。

暫無
暫無

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

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