簡體   English   中英

不顯示Visual Studio 2013 WPF設計時數據

[英]Visual Studio 2013 WPF design-time data isn't displayed

我有一些在設計器中可以正常顯示的UserControl,但是我無法對構造函數中的設計時示例內容進行任何更改。 似乎根本沒有執行。

XAML:

<UserControl x:Class="Example.Test"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
        <TextBlock Name="testx" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
</Grid>

碼:

using System.ComponentModel;
using System.Windows.Controls;

namespace Example
{
    /// <summary>
    /// Interaction logic for Test.xaml
    /// </summary>
    public partial class Test : UserControl
    {
        public Test()
        {
            InitializeComponent();
            if (DesignerProperties.GetIsInDesignMode(this))
                testx.Text = " IN DESIGN!";
        }
    }
}

我已經嘗試了很多選項,但是仍然無法在WPF設計器中顯示如何顯示設計時數據:(不同的上下文綁定也什么也沒有顯示...

PS:在Win8上嘗試了干凈的VS2012和VS2013項目。 什么都沒做! :(我不知道該怎么辦,還沒有在網上找到任何類似的東西...僅在構造函數中添加設計檢查並設置現有的控制文本就足夠了嗎?

K,最簡單的答案是:您在正確的道路上。
總的來說是:比這復雜一點。

如果放入另一個else testx.Text = RUNTIME; ,示例將像“ kinda”一樣工作else testx.Text = RUNTIME; 在您if ,像這樣:

if (DesignerProperties.GetIsInDesignMode(this))
   testx.Text= " IN DESIGN!";
else
   testx.Text= " Runtime";

您將在運行時看到所需的內容,但您的設計時間將為空。

在設計時,如果我沒記錯的話,還需要設置上下文。 如果您正在使用任何MVVM框架,則可以“免費”獲得此功能。 與之類似,您將擁有“設計時”屬性,並且可以設置設計所需的任何數據。 要注意的是,如果我的記憶正確,則需要有一個空的構造函數。 您還將使用綁定,而不是直接設置text屬性。

我記得上次我在“香草” wpf中嘗試執行類似的操作時缺少默認的WPF和綁定(例如,沒有MVVM,沒有綁定),但是我相信這有點兒破解這是可以實現的。 再說一次,我記不起來了。

暫無
暫無

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

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