数据网格单元格内的自定义 WPF 用户控件 - 此子控件如何获取事件上的行对象或 Id?

发布于 2024-12-11 05:10:38 字数 1059 浏览 0 评论 0原文

所以我有一个自定义控件:

<Grid>
    <StackPanel HorizontalAlignment="Center" Orientation="Vertical">
        <CheckBox x:Name="chkboxListen" HorizontalAlignment="Center" Checked="chkboxListen_Checked" Unchecked="chkboxListen_Unchecked"/>
        <MediaElement x:Name="mediaElementAudioPlayer" Volume="{Binding ElementName=sliderVol, Path=Value}" />
        </StackPanel>
</Grid>

它将驻留在 DataGrid 模板列中:

            <DataGridTemplateColumn x:Name="callListenL"  Header="Listen(L)" IsReadOnly="False">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <localControls:AudioPlay x:Name="audioPlayL" localControls:AudioPlay>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

我的问题是:

当我选中 chkboxListen 复选框时,如何从 DataGrid(父级)的行中获取信息?每行都有一个带有 Id 的 myObject。我只需要那个身份证。

先感谢您。

So I have a custom control:

<Grid>
    <StackPanel HorizontalAlignment="Center" Orientation="Vertical">
        <CheckBox x:Name="chkboxListen" HorizontalAlignment="Center" Checked="chkboxListen_Checked" Unchecked="chkboxListen_Unchecked"/>
        <MediaElement x:Name="mediaElementAudioPlayer" Volume="{Binding ElementName=sliderVol, Path=Value}" />
        </StackPanel>
</Grid>

And it will reside within a DataGrid Template Column:

            <DataGridTemplateColumn x:Name="callListenL"  Header="Listen(L)" IsReadOnly="False">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <localControls:AudioPlay x:Name="audioPlayL" localControls:AudioPlay>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

My question is:

When I Check the chkboxListen CheckBox, how I can get the Information from the row of the DataGrid (Parent)? Each row has a myObject with an Id. I just need that Id.

Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你另情深 2024-12-18 05:10:38

您可以从用户控件中公开属性,并在数据网格数据绑定时设置该属性的值。

例如,假设您的用户控件的属性名为 ParentRowId,您可以在代码后面设置它或使用 Eval 表达式

 <DataGridTemplateColumn x:Name="callListenL"  Header="Listen(L)" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <localControls:AudioPlay x:Name="audioPlayL" ParentRowId='<%# Cint(Eval("Id")) %>' localControls:AudioPlay>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

You can expose a property from within your user control and set the value of that property when the datagrid data binds.

For example, say your user control's property is called ParentRowId you could set it in code behind or use an Eval expression

 <DataGridTemplateColumn x:Name="callListenL"  Header="Listen(L)" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <localControls:AudioPlay x:Name="audioPlayL" ParentRowId='<%# Cint(Eval("Id")) %>' localControls:AudioPlay>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文