我正在使用没有表达式混合,只使用vs2010中的XAML编辑器.除此之外,我越来越多地看到了对设计时数据绑定的需求.对于简单的情况,该FallbackValue属性非常好用(Textboxes和TextBlocks等).但特别是在处理ItemsControl等时,确实需要在设计器中显示样本数据,以便您可以调整和调整控件和数据模板,而无需运行可执行文件.
我知道ObjectDataProvider允许绑定到一个类型,因此可以提供可视化的设计时数据,但是有一些杂耍,允许绑定真实的运行时数据,而不通过加载设计时加载浪费资源, dummied数据和运行时绑定.
我真正想要的是能够拥有,比如"John","Paul","George"和"Ringo"在XAML设计师中作为我的可设置项目出现ItemsControl,但是当应用程序显示真实数据时运行.
我也知道Blend允许一些花哨的属性来定义WPF在运行时条件下有效忽略的设计时绑定数据.
所以我的问题是:
1.我如何利用visual studio XAML设计器中的集合和非平凡数据的设计时绑定,然后平滑地交换到运行时绑定?
2.其他人如何解决这个设计时与运行时数据问题?就我而言,我不能很容易地为两者使用相同的数据(例如,数据库查询可以使用相同的数据).
3.他们可以用于数据集成XAML设计的表达混合替代品吗?(我知道有一些替代方案,但我特别想要一些我可以使用的东西,看看绑定的样本数据等?)
我正在研究传统产品.我需要根据构建常量使复杂UI的区域可选.将这些区域移动到控件中是不可行的,因此我使用AlternateContent Tags(mc:AlternateContent).
这在编译时非常有效,应用程序按预期运行.
但是,IDE为每个AlternateContent声明了一个错误,并且包含了Choice标签,并且不会加载设计窗口/预览(在VS或Blend中):
The name "AlternateContent" does not exist in the namespace "http://schemas.openxmlformats.org/markup-compatibility/2006"
The name "Choice" does not exist in the namespace "http://schemas.openxmlformats.org/markup-compatibility/2006"
Run Code Online (Sandbox Code Playgroud)
我尝试过,重建,清理和重建,在发布,调试,x86,x64和重新启动之间更改构建设置.什么都没有帮助.它甚至在Blend中给出了相同的错误.
我希望这只是我正在做的蠢事,我可以解决它; 或者可能是我应该使用的更新的名称空间URI.如果我无法解决错误,我希望有人知道在IDE中抑制这些错误的技巧,所以可以使用它.
我有一个完全更新的VS2013 Premium安装.然而,它在运行VS14 CTP的测试机器上有一个小故障,另一个运行VS2012(完全更新),两者都没有任何插件; 所以我不得不认为我的电脑安装不是问题.
ide xaml visual-studio visual-studio-2012 visual-studio-2013
我有一些用C#WPF编写的代码,我有一些调试代码,我目前正在编译或关闭调试或发布模式.如何启用或禁用当前基于C#预处理器定义在我的XAML中编写的UI控件?
我们有一个内部程序来测试和验证我们销售的工业控制产品.我们希望能够为某些客户提供缩小版或轻量版的版本.
我们的程序是用C#和WPF(因此是XAML)编写的.使用条件编译功能可以轻松完成仅在我们工厂中使用的C#代码部分,例如:
#if FACTORY
// our in-house code . . .
. . .
. . .
#endif
Run Code Online (Sandbox Code Playgroud)
但是,我们如何为我们计划的XAML部分完成类似的工作?
注意: **有关此主题的Stack Overflow问题,其中某人发布了带有链接的简洁答案,但该链接似乎与该问题无关.因此,不要将其视为重复,因为它不回答问题.* XAML条件编译
我试图在调试和发布配置中显示WPF控件中的不同视图元素以进行测试.我使用这篇文章作为指南: XAML是否有调试模式的条件编译器指令?(所以)
为了测试它,我创建了一个VS2013解决方案,其中包含一个名为TestingAlternateContent的WPF应用程序项目.在我的AssemblyInfo.cs中,我添加了以下代码:
#if DEBUG
[assembly: XmlnsDefinition("debug-mode", "TestingAlternateContent")]
#endif
Run Code Online (Sandbox Code Playgroud)
在我的MainWindow.xaml中,我创建了一个简单的代码示例来测试此行为,如下所示:
<Window x:Class="TestingAlternateContent.MainWindow"
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:debug="debug-mode"
mc:Ignorable="mc debug"
Title="MainWindow" Height="350" Width="525">
<Grid>
<mc:AlternateContent>
<mc:Choice Requires="debug">
<TextBlock Text="Debug mode!!" />
</mc:Choice>
<mc:Fallback>
<TextBlock Text="Release mode here!" />
</mc:Fallback>
</mc:AlternateContent>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
在测试时,我总是看到窗口显示"释放模式!" 消息,无论我使用哪种配置(Debug,Relase).我已经检查过AssemblyInfo #if DEBUG正在正常工作,当我在Debug/Release配置之间进行更改时会相应地进行更改.我已经使用.NET Framework 3.5/4.5版本在VS2008/VS2013下测试了相同的代码,但没有一个有效.我错过了什么?任何人都知道这里有什么问题或者可以发布工作代码作为参考?
xaml ×6
wpf ×4
c# ×3
.net ×1
compilation ×1
conditional ×1
data-binding ×1
design-time ×1
designer ×1
ide ×1