【问题标题】:Binding ContentControl Content with Window Content将 ContentControl 内容与窗口内容绑定
【发布时间】:2014-09-07 17:39:13
【问题描述】:

我有一个没有标题栏的窗口。

<Window x:Class="WpfApplication1.PopupWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        WindowStyle="None" ResizeMode="NoResize"
        AllowsTransparency="True" Background="Transparent">
    <Border Margin="10">
        <Border.Effect>
            <DropShadowEffect Color="Black"
                              Direction="270"
                              BlurRadius="10"
                              ShadowDepth="3" />
        </Border.Effect>
        <Grid Background="White">
            <DockPanel>
                <DockPanel Name="titleBar"
                           DockPanel.Dock="Top"
                           Height="32"
                           Background="LimeGreen">
                    <TextBlock Padding="8"
                               VerticalAlignment="Center"
                               Text="My Special Window"
                               Foreground="White"
                               FontWeight="999"
                               FontSize="16" />
                </DockPanel>
                <ContentControl Name="content" />
            </DockPanel>
        </Grid>
    </Border>
</Window>

我有在 PopupWindow 中加载的麦芽用户控件。

在视图模型中,我用不同的内容显示这个窗口。

SearchViewModel vm = new SearchViewModel();
SearchView view = new SearchView();
view.DataContext = vm;
PopupWindow window = new PopupWindow();
window.Owner = Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive);
window.Content = view;
window.ShowDialog();

为 PopupWindow 内容设置了 Searchview,但我想为 ContentControl 的内容设置 searchview。这是怎么回事?

【问题讨论】:

    标签: c# wpf mvvm mvvm-light


    【解决方案1】:

    不要在 Window 上设置 Content,而是直接在 ContentControl 上设置:

    window.content.Content = view;
    

    【讨论】:

    • 谢谢,但是我在另一个类中为窗口设置了内容,所以我无法访问内容控制。
    • 它也可以从其他类访问。您是否尝试过访问它?
    • 不,我用&lt;ContentControl Name="content" x:FieldModifier="public"/&gt;
    • 是的,您需要x:FieldModifier="public",以防它们位于单独的程序集中。但是如果类在同一个程序集中,您可以直接访问它。
    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2012-09-24
    相关资源
    最近更新 更多