小编Wil*_* E.的帖子

WPF DataTemplate显示ToString

我正在开发一个小程序,并尝试使用DataTemplate遵循MVVM方法为我的VM创建视图。我遇到的问题是,它没有显示视图的实例,而是显示了VM的ToString()结果。如果我在View类的构造函数上放置一个断点(MainNavigation.xaml),将永远无法达到。

下面的代码,帮助赞赏。

MainWindow.xaml

<Window x:Class="Tester.Wpf.MainWindow"
    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:Tester.Wpf"
    xmlns:scr="clr-namespace:Tester.Wpf.Screens"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">

<Window.Resources>
    <DataTemplate DataType="x:Type scr:MainNavigationViewModel">
        <scr:MainNavigation />
    </DataTemplate>
</Window.Resources>

<Grid>
    <ContentControl Name="MainNav" Content="{Binding MainNavigationViewModel2}" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml.cs

using System.ComponentModel;
using System.Windows;
using Tester.Wpf.Screens;

namespace Tester.Wpf
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window, INotifyPropertyChanged
    {
        private MainNavigationViewModel _mainNavigationViewModel;

        public MainWindow()
        {
            this.DataContext = this;
            this.MainNavigationViewModel2 = new MainNavigationViewModel();

            InitializeComponent();
        }

        public MainNavigationViewModel MainNavigationViewModel2
        {
            get { return …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm

3
推荐指数
1
解决办法
173
查看次数

WPF UserControl 不继承父 DataContext

我正在尝试开发一个可重用的 UserControl,但遇到了绑定问题。我创建了一个较小的应用程序来测试它,但无法对其进行整理,或者至少理解为什么它没有按我的预期工作。

代码如下。我期望的是我放在 MainWindow.xaml 上的 TestUserControl 的实例将继承那里的 DataContext 就像下面的 TextBlock 一样。相反,它的 DataContext 似乎为空。DataContext 没有传递下去有什么原因吗?我必须自动设置吗?

主窗口.xaml

<Window x:Class="WpfTestApp.MainWindow"
        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:WpfTestApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel Orientation="Vertical">
        <local:TestUserControl TextFromParent="{Binding SomeText}" />
        <TextBlock Name="TestTextBlock" Text="{Binding SomeText}" />

    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

主窗口.xaml.cs

using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows;

namespace WpfTestApp
{
    public partial class MainWindow : Window, INotifyPropertyChanged
    {
        private string _someText;

        public MainWindow()
        {
            DataContext = this;

            InitializeComponent();

            SomeText = "New Text!";
        }

        public string SomeText
        {
            get { return _someText; …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml user-controls

1
推荐指数
1
解决办法
4758
查看次数

标签 统计

c# ×2

wpf ×2

mvvm ×1

user-controls ×1

xaml ×1