c# - WPF ListBox 项目命令绑定(bind)

标签 c# wpf listbox

我有以下列表框

<Page.DataContext>
    <self:NewUserViewModel/>
</Page.DataContext>
<ListBox x:Name="PermissionLbox"  ItemsSource="{Binding ListFromDataContext}" Height="75" Margin="10,117,10,0" VerticalAlignment="Top">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding .}"></CheckBox>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

为什么如果我将 CheckBox 定义更改为:

<CheckBox Command={Binding CommandFromDataContext} Content="{Binding .}"></CheckBox><CheckBox   Content="{Binding .}"></CheckBox>

尽管 NewUserViewModel 中存在 CommandFromDataContext,但无法解析名称 CommandFromDataContext。 ListFromDataContext 是 NewUserViewModel 和 Command 的属性,但 Command 未解析。

最佳答案

复选框的数据上下文不再是 View 模型,而是它在列表框中实例化的单个项目。

您需要绑定(bind)到 RelativeSource 和 Path 才能再次访问 ViewModel。

参见 existing answer了解详情。

关于c# - WPF ListBox 项目命令绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37750504/

相关文章:

c# - 使用 Newtonsoft JSON 处理循环引用

c# - 使用表达式树设置字段值

c# - 数据模板绑定(bind)垃圾邮件输出窗口出现错误 : Cannot find governing FrameworkElemen

c# - 从 WindowsFormsHost 中的 Windows 窗体控件获取 WPF 窗口

c# - 更改列表框中一个列表项的背景(不是所选项目)

c# - WPF 3D - 应用转换,更改基础对象值

c# - 让 Filter.OnAuthorization 在 Controller.OnAuthorization 之前运行

wpf 调整窗口大小以使用所有监视器

c# - 列表框项目删除

c# - 编号列表框