2016-12-03 8 views
0

私は、ユーザーコントロールとウィンドウの両方のプロパティと、自分のMainwindow.xamlで使用されているベースクラスコントロールを継承する基本クラスを作成します。私は次のエラー " 'メインウィンドウ' の部分的な宣言が別の基本クラスを指定してはなりません" を使用して取得していますが、コードの下 メインウィンドウのベースクラスコントロールを使用するXAML

Usercontrol1.xaml

<UserControl x:Class="WpfApplication1.UserControl1" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:WpfApplication1" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <Grid> 
     <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="80,46,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 
     <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="80,82,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/> 

    </Grid> 
</UserControl> 

UserControl1.xaml.cs

namespace WpfApplication1 
{ 
    public class baseclass : UserControl 
    { 
     public Button textBox { get; set; } 

     public baseclass() 
     { 
     } 

     private void button_Click(object sender, RoutedEventArgs e) 
     { 
      if (!string.IsNullOrEmpty(textBox.ToString())) 
      { 

      } 
     } 
    } 

    public partial class UserControl1 
    { 
     public UserControl1() 
     { 
      InitializeComponent(); 
     } 


    } 
} 

ここでメインウィンドウでusecontrolを使用するにはどうすればいいですか。メインウィンドウのコードは Mainwindow.xaml.cs

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

MainWindow.xaml

<Window x:Class="WpfApplication1.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:WpfApplication1" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 

    </Grid> 
</Window> 
+0

このライン '公共の部分クラスUを交換してくださいSerControl1'と 'public partial class UserControl1:UserControl' – AnjumSKhan

+0

@AnjumSKhanは動作していません....メインウィンドウで基本ユーザコントロールを使用したいのですが、これは私がやろうとしていることです – stylishCoder

答えて

0

私は何かを明らかに欠けているか、他の人が何かを明らかに見逃している場合、私はわかりません!私はとうまくMainWindowbaseclassを追加することができます。

<Window x:Class="WpfApp2.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:WpfApp2" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <local:baseclass /> 
</Window> 

重要なことは、あなたがいないだけで、貨物はコードをcultingしている場合xmlns:local="clr-namespace:WpfApp2"

として定義されていますlocal:xmlns名前空間です、あなたが見ることができる方法上記の意志あなたのために働く。

あなたが聞いたことのない質問に対する本当の答えは、あなたが間違っていることです! baseclassのテキストボックスは、UserControlとして初期化していないため動作しません(これはUserControlから継承するだけではありません)。MvvMを学び、背後にあるコードに依存しないようにします。あなたの人生ははるかに簡単になります。

0

は、私は、これは私はあなたがすることはできません

をやろうとミリアンペアものですメインウィンドウにベースのユーザー・コントロールを使用します。トップレベルのウィンドウクラスはSystem.Windows.Controls.UserControlから継承できません。 System.Windows.Windowから継承する必要があります。 WPFのユーザーコントロールとウィンドウの両方に共通の基本クラスを定義することはできません。

あなたはしかしUserControl1のの基本クラスを変更することができますが、XAMLマークアップと分離コードファイルの両方に同じ基本クラスを指定する必要があります。

UserControl1.xaml.cs:

public partial class UserControl1 : baseclass 
{ 
    public UserControl1() 
    { 
     InitializeComponent(); 
    } 
} 

UserControl1.xaml:

<local:baseclass x:Class="WpfApplication1.UserControl1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:local="clr-namespace:WpfApplication1" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300"> 
<Grid> 
    <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="80,46,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 
    <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="80,82,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/> 

</Grid> 
</local:baseclass> 
関連する問題