Tag: xaml

WPF中DataGridColumn的绑定可见性

如何通过绑定隐藏WPF DataGrid的列? 这就是我所做的: <DataGridTextColumn Header="Column header" Binding="{Binding ColumnValue}" Width="100" ElementStyle="{StaticResource DataGridRightAlign}" Visibility="{Binding MyColumnVisibility}" /> 这就是我所得到的(除了列仍然可见): System.Windows.Data错误:2:找不到控制目标元素的FrameworkElement或FrameworkContentElement。 BindingExpression:path= MyColumnVisibility; 的DataItem = NULL; 目标元素是'DataGridTextColumn'(HashCode = 1460142); 目标属性是“可见性”(types“可见性”) 不知道什么pipe理手段。 总统先生在我窗前的某个地方有什么决定哪些是有效的,哪些不是? 或者我需要投票支持什么? 在networkingsearch解决scheme的过程中,我发现有十几个页面的标题很有希望,但内容完全不相关或不可重复。 所以这似乎是关于这个问题的第一个问题。 任何想法?

WPF:显示一个布尔值为“是”/“否”

我有一个布尔值,我需要在TextBlock中显示为“是”或“否”。 我正在尝试使用StringFormat来完成此操作,但是我的StringFormat被忽略,并且TextBlock显示“True”或“False”。 <TextBlock Text="{Binding Path=MyBoolValue, StringFormat='{}{0:Yes;;No}'}" /> 我的语法有什么问题,或者这种types的StringFormat不受支持? 我知道我可以使用ValueConverter来实现这一点,但StringFormat解决scheme似乎更优雅(如果它的工作)。

如何将颜色转换为XAML中的画笔?

我想将System.Windows.Media.Color值转换为System.Windows.Media.Brush。 颜色值是数据绑定到Rectangle对象的填充属性。 填充属性需要一个Brush对象,所以我需要一个IValueConverter对象来执行转换。 有没有WPF中的内置转换器,还是我需要创build自己的? 如果有必要,我该如何创build自己的?

x:Reference和ElementName有什么区别?

根据MSDN上的x:Reference Markup Extension页面, x:Reference 引用在XAML标记中其他地方声明的实例。 引用是指元素的x:Name。 根据MSDN上的Binding.ElementName属性页面, ElementName 名称属性的值或x:感兴趣的元素的名称指令。 回头看第一页的备注部分: x:引用和WPF 在WPF和XAML 2006中,元素引用由ElementName绑定的框架级function来解决。 对于大多数WPF应用程序和场景,仍应使用ElementName绑定。 这个通用指南的例外情况可能包括数据上下文或其他范围的考虑使数据绑定不切实际以及不涉及标记编译的情况。 为了完整ElementName是ElementName页面上备注部分的一部分: 当你想绑定到应用程序中另一个元素的属性时,这个属性是很有用的。 例如,如果要使用滑块来控制应用程序中另一个控件的高度,或者如果要将控件的内容绑定到ListBox控件的SelectedValue属性。 现在,虽然我完全了​​解何时以及如何使用ElementName属性,但我并不完全了解它与x:Reference标记扩展之间的区别。 任何人都可以解释这一点,特别是扩展在x:Reference备注部分显示的最后一句话吗? 这个通用指南的例外情况可能包括数据上下文或其他范围的考虑使数据绑定不切实际以及不涉及标记编译的情况。

在WPF / Silverlight页面中设置自定义属性

这听起来应该是简单的。 我有一个正常的方式在XAML中声明的Page (即“添加新项目…”),它有一个自定义属性。 我想在与页面关联的XAML中设置该属性。 试图做同样的方式,我设置任何其他财产不起作用,原因我明白,但不知道如何工作。 就这样我们有一些具体的讨论,这里有一些(无效的)XAML。 我尽可能地减less了所有的东西 – 原来有一些属性,比如devise师的大小,但我相信这些与我正在做的事情无关。 <Page x:Class="WpfSandbox.TestPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" MyProperty="MyPropertyValue"> </Page> 和相应的代码隐藏: using System.Windows.Controls; namespace WpfSandbox { public partial class TestPage : Page { public TestPage() { InitializeComponent(); } public string MyProperty { get; set; } } } 错误信息: 错误1 XML名称空间“ http://schemas.microsoft.com/winfx/2006/xaml/presentation ”中不存在属性“MyProperty”。 4号线位置7。 现在我知道为什么这是失败的:元素是types的Page和Page没有名为MyProperty属性。 这只是在TestPage声明的…它由x:Class属性指定,而不是由元素本身指定。 据我所知,这个configuration是XAML处理模型(即Visual Studio集成等)所必需的。 我怀疑我可以用一个依赖属性来处理这个,但是这有点像矫枉过正。 我也可以使用现有的属性(例如DataContext ),然后将值复制到代码后面的自定义属性中,但这会非常难看。 […]

alignmentWPF中堆栈面板左侧和右侧的控件

我有以下代码: <DockPanel> <StackPanel DockPanel.Dock="Top" Orientation="Horizontal"> <RadioButton Content="_Programs" IsChecked="{Binding Path=ProgramBanksSelected}" IsEnabled="{Binding Path=ProgramsEnabled}" Margin="8" /> <StackPanel> <Label Content="Master" Height="28" Name="MasterFileStatus" VerticalContentAlignment="Center"/> </StackPanel> </StackPanel> … 单选button应该放在堆栈面板的左侧(我删除了一些button,不要混淆这个例子),标签(我暂时放在一个嵌套的StackPanel中)应该在右侧。 我已经尝试了很多路线的组合,但我无法在右侧获得标签。 我应该添加什么来完成这个?

如何在debugging时删除“转到活视觉树”/“启用select”/“显示布局装饰者”覆盖?

如何在debugging时删除带有3个图标的盒子?

StringFormat和带标签的多重绑定

我想使用StringFormat来做这样的事情: <Label x:Name="myLabel"> <Label.Content> <Multibinding StringFormat="{}{0} – {1}"> <Binding Path="Lib1" /> <Binding Path="Lib2" /> </MultiBinding> </Label.Content> </Label> 但是,这是行不通的,我得到这个错误,而不是: MultiBinding失败,因为它没有有效的转换器。 MultiBindingExpression:目标元素是'Label'(Name ='myLabel'); 目标属性是“内容”(types“对象”) 有什么办法可以使这个代码工作?

在TextBox中确定Enter键

考虑Win Phone 7中的XAML TextBox。 <TextBox x:Name="UserNumber" /> 这里的目标是,当用户按下屏幕上的键盘上的Enterbutton时,会启动一些逻辑来刷新屏幕上的内容。 我想为Enter提供一个特别的事件。 这可能吗? 特定于TextBox的事件,还是系统键盘事件? 是否需要检查每个按键上的Enter ? 即一些模拟到ASCII 13? 什么是编码这个要求的最好方法?

如何摆脱TextBlock中运行之间的空白?

我有以下XAML: <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="10" FontFamily="Arial" Foreground="#414141"> <Run Text="{Binding LoadsCount}" /> <Run Text="+" /> <Run Text="{Binding BrokerLoadsCount}" /> </TextBlock> 我得到这样的显示: 12 + 11不知怎的,它在每次Run之间插入额外的空间如何让它显示12+11 ?