2016-01-21 43 views
1

每當我綁定文本屬性對設計師,我什麼也看不到在我的文字會出現在運行時的地方觀看模型屬性文本對VS 2015年設計時可見控件的文本字段值綁定

<TextBlock Text="{Binding SomeExampleText}"/> 

。當我使用X:綁定:在設計師,我看到

<TextBlock Text="{x:Bind ViewModel.SomeExampleText}"/> 

「ViewModel.SomeExampleText」,有時不顯示全長由於缺乏空間(如果綁定路徑太長)。

有沒有什麼辦法可以在設計器中顯示自定義文本,僅用於預覽而不是綁定路徑,或者如上面所示的那樣沒有任何綁定路徑?

+0

見[此篇](http://stackoverflow.com/questions/18495471/adding-rows-to-datagrid-through-xaml/18495961?noredirect=1 #comment57579004_18495961)關於設計時數據。 – dotNET

+0

我不認爲複製每個控件的文本屬性都是虛擬的,這是一個很好的方法......其他解決方案同樣也是從代碼中添加綁定,但這也不是我正在尋找的。 – RTDev

回答

1

有幾種方法可以專門爲設計時間創建視圖模型。最簡單的方法大概是這樣的:

<TextBlock Text="{x:Bind ViewModel.SomeExampleText, FallbackValue='Hello!'}"/> 

那一個演示了在設計字符串「Hello」,都與Bindingx:Bind

對於Binding您可以設置設計時數據的上下文是這樣的:

<Page 
    ... 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:viewModels="using:MyNameSpace.ViewModels" 
    d:DataContext="{d:DesignInstance Type=viewModels:DesignTimeViewModel, IsDesignTimeCreatable=True}" 
    mc:Ignorable="d"> 

DesignTimeViewModel不需要任何spcecific關係到你的運行時視圖模型;它只需要具有相同名稱的適當屬性。如果你對收藏有約束力,這可能是你最好的選擇。

+0

Fallbackvalue正是我想要的,謝謝 – RTDev

0

爲Design視圖創建一個特定的視圖模型,以便用真實的數據撥入視圖的佈局和樣式,這些數據不會進入運行時環境。

由於x:Bind尋找強類型數據源的代碼隱藏,因此您需要在Design視圖中模擬該數據綁定路徑。這裏有一種方法:

將d:DataContext屬性應用於您的視圖,將Type屬性設置爲您的視圖。當「IsDesignTimeCreatable」爲真時,它會創建一個新的代碼隱藏實例。

d:DataContext="{d:DesignInstance Type=local:MainPage,IsDesignTimeCreatable=True}" 

你的代碼背後可能有一個可以設置爲設計時的狀態用假數據,或利用真實數據來運行時的狀態的視圖模型屬性。

本博客文章給出了一個例子:http://fast417.blogspot.com/2016/06/uwp-design-preview-with-xbind.html