簡體   English   中英

將DataContext設置為xaml.cs文件

[英]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>

我已經嘗試過同時使用Namex: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;

編輯:

或者,您可以通過在其中設置源來設置帶有BindingContent

Content="{Binding PresenterContent, ElementName=MyName}"

您可以命名父控件,然后使用ElementName綁定子控件的DataContext:

DataContext="{Binding ElementName=TheWindow}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM