gpt4 book ai didi

c# - 如何将参数传递给 DataContext?

转载 作者:行者123 更新时间:2023-11-30 20:50:18 27 4
gpt4 key购买 nike

是否可以通过 XAML 将一些数据传递到绑定(bind)源/数据上下文?

在我的特定情况下,我希望为绑定(bind)源提供对创建它的窗口的引用。

例如:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MyNamespace"
x:Name="MyWindow">

<Window.Resources>
<local:MarginDataContext x:Key="MyDC"/>
</Window.Resources>

<!-- I want to pass in "MyWindow" to "MyDC" here... -->
<Grid Margin="{Binding Source={StaticResource MyDC}, Path=My_Margin}" />
</Window>

注意:MarginDataContext 是我自己创建的,所以如果这涉及到添加构造函数参数或其他内容,那将可以正常工作!

更新:我想要一个符合我的项目特定要求的解决方案:

  • 不使用 x:Reference 扩展。
  • 尽可能少地使用代码(我希望能够在 XAML 中完成大部分工作)。

谢谢!

最佳答案

您可以在 XAML 中访问 MarginDataContext 的任何属性。因此,假设您创建了一个 WindowInstance 属性,然后您可以使用 x:Reference 简单地在构造 MarginDataContext 时分配它:

<local:MarginDataContext x:Key="MyDC" WindowInstance="{x:Reference MyWindow}"/>

关于c# - 如何将参数传递给 DataContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22645381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com