标签: datatemplate

WPF 错误:“无法将内容添加到 BarStaticItem 类型的对象”

我有这个 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

我该如何解决这个问题,以便我可以执行诸如更改渲染项目的颜色和样式之类的操作?

wpf xaml datatemplate wpf-controls contenttemplate

0
推荐指数
1
解决办法
6407
查看次数

根据视图模型属性绑定更改 MenuItem 标题和图标

我无法弄清楚如何做到这一点,人们会认为这很简单。

我有一个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 datatrigger datatemplate menuitem

0
推荐指数
1
解决办法
1696
查看次数

如果绑定为空,则在 XAML 中设置默认值

编辑

这不是字符串空值的回退的重复。我要求对复杂类型进行回退。

原始问题

这是我昨天问的一个问题的后续问题:

将 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)

c# data-binding wpf xaml datatemplate

0
推荐指数
1
解决办法
2664
查看次数

WPF ItemsControl绑定和项目顺序

我在WPF应用程序中有ItemsControl,它绑定到一个对象数组.我正在使用ItemTemplate来呈现列表.我想为列表中的每个项目显示项目顺序,例如

客户1名称:xxxxx年龄:9999

客户2姓名:yyyy年龄:8888

任何想法如何做到谢谢

data-binding wpf datatemplate itemscontrol

-1
推荐指数
1
解决办法
1828
查看次数