[英]Setting DataContext to xaml.cs file
我有一個Grid
和其中的一個組件。 Grid
具有自定義DataContext
而子級必須使用默認的.xaml.cs
文件。
當然,更改父控件的DataContext
也會更改子控件的DataContext
。
因此,我需要將孩子的DataContext
設置為xaml.cs
文件。
我正在嘗試使用DataContext="{Binding}"
但無法正常工作。
我怎樣才能做到這一點?
編輯:這是我的基於答復的代碼
<UserControl x:Class="MyNamespace.MyClass"
x:Name="MyName"
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:lsp="clr-namespace:LSPlugins"
xmlns:utils="clr-namespace:LSPlugins.Utilities"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="480" d:DesignWidth="480">
<UserControl.Resources>
<utils:ColorToSolidColorBrushValueConverter x:Key="ColorConverter"/>
<lsp:MyModel x:Key="MyModel" x:Name="MyModel"/>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" DataContext="{StaticResource MyModel}" Background="{Binding Path=BackgroundColor, Converter={StaticResource ColorConverter}}" Opacity="{Binding Path=BackgroundOpacity}">
<ContentPresenter Content="{Binding PresenterContent}" DataContext="{Binding ElementName=MyName}"/>
</Grid>
</UserControl>
我已經嘗試過同時使用Name
和x:Name
但是它仍然無法正常工作,並且會引發以下異常:
System.Windows.Data錯誤:BindingExpression路徑錯誤:在'MyNamespace.MyModel''MyNamespace.MyModel'(HashCode = 63183526)上找不到'PresenterContent'屬性。 BindingExpression:路徑='PresenterContent'數據項='MyNamespace.MyModel'(HashCode = 63183526); 目標元素是'System.Windows.Controls.ContentPresenter'(Name =''); 目標屬性為“內容”(類型為“ System.Object”)。
嘗試將頁面元素本身綁定到DataContext屬性:
DataContext="{Binding ElementName=phoneApplicationPage}
或者,在后面的代碼中(即xaml.cs文件):
yourElement.DataContext = this;
編輯:
或者,您可以通過在其中設置源來設置帶有Binding
的Content
:
Content="{Binding PresenterContent, ElementName=MyName}"
您可以命名父控件,然后使用ElementName綁定子控件的DataContext:
DataContext="{Binding ElementName=TheWindow}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.