我有这个 XAML:
<dxb:BarStaticItem>
<TextBlock Text="{Binding MyStatusBarText}"></TextBlock>
</dxb:BarStaticItem>
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
Cannot add content to an object of type BarStaticItem
我该如何解决这个问题,以便我可以执行诸如更改渲染项目的颜色和样式之类的操作?
我无法弄清楚如何做到这一点,人们会认为这很简单。
我有一个MenuItem是a的一部分ContextMenu。我binding在视图模型上有一个布尔属性。根据此属性的状态,我希望MenuItem更改 的标题文本和图标。
我当然可以IValueConverter为此使用 an ,但我确信使用 aDataTemplate和触发器有更优雅的解决方案。我只是想不出正确的标记。
我编写的代码(在下面剪下)有两个问题:一个HeaderTemplate似乎不包含图标,所以MenuItems's 的文本也包含图标(通常图标出现在左侧部分 - 参见图片并与复制和清除菜单项进行比较)。此外,单击MenuItem不会触发DataTemplate更改(注意该命令有效,viewmodel 绑定实际上会切换真/假状态)。
<ContextMenu>
<MenuItem Command="{Binding Source={x:Static cmd:Commands.PauseCommand}}"
CommandParameter="{Binding}">
<MenuItem.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image x:Name="img" Source="../Icons/pause.png"/>
<TextBlock x:Name="txt" Text="Pause"/>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsPaused}" Value="True" >
<Setter Property="Image.Source" Value="../Icons/play.png" TargetName="img"/>
<Setter Property="Text" Value="Play" TargetName="txt"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</MenuItem.HeaderTemplate>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)
编辑
这不是字符串空值的回退的重复。我要求对复杂类型进行回退。
原始问题
这是我昨天问的一个问题的后续问题:
将 WPF 命令绑定到 C# XAML 中的 ViewModel 属性
我接受的答案的核心部分是这样的:
<Window.Resources>
<DataTemplate DataType="{x:Type local:SettingsPathSelectorViewModel}">
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding SettingsPath}" />
<Button
Content="..."
Command="{Binding OpenFile}"
HorizontalAlignment="Left"
MinWidth="40"
Margin="4,0,0,0"
/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<StackPanel Orientation="Vertical">
<Label>First Path</Label>
<ContentControl Content="{Binding FirstPath}" />
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
ADataTemplate是为自定义类型创建的,然后将 aContentControl绑定到该类型的属性。
现在的问题是,属性(FirstPath在示例中)可能是null并且没有呈现任何 UI 元素。我怎么能完成从DataTemplate属性呈现控件null
正如 Evk 建议的那样,我已经实现了一个转换器:
public class PathSelectorConverter : IValueConverter
{
public object Convert(object o, Type type, object parameter, CultureInfo culture) …Run Code Online (Sandbox Code Playgroud) 我在WPF应用程序中有ItemsControl,它绑定到一个对象数组.我正在使用ItemTemplate来呈现列表.我想为列表中的每个项目显示项目顺序,例如
客户1名称:xxxxx年龄:9999
客户2姓名:yyyy年龄:8888
任何想法如何做到谢谢
datatemplate ×4
wpf ×4
data-binding ×2
xaml ×2
c# ×1
datatrigger ×1
itemscontrol ×1
menuitem ×1
wpf-controls ×1