0

3つのユーザーコントロールがあります。

ユーザーコントロール1

<UserControl
    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:Gramercy"
    mc:Ignorable="d"
    x:Class="wpfapplication.UCManageQALibrary"
    x:Name="UserControl"
    d:DesignWidth="774" d:DesignHeight="529.723">

    <Grid x:Name="LayoutRoot">
        <Grid>
            <Button Content="List QA" x:Name="btnSearchQAStructure" Click="Button_Click_1" />
            <Button Content="Add New QA" x:Name="btnAddNewQAStructure"  Click="Button_Click" /> 

            <local:UCSearchQALibrary x:Name="searchQALibrary" Visibility="Visible"/>
                    <local:AddNewQA x:Name="addQALibrary" Visibility="Hidden"/>         


        </Grid>
    </Grid>
</UserControl>

ユーザーコントロール2

<UserControl
    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
    mc:Ignorable="d"
    x:Class="wpfapplication.AddNewQA"
    x:Name="UserControl"
    d:DesignWidth="1280" d:DesignHeight="1024">

    <Grid x:Name="LayoutRoot">
        <Grid>
        <Label x:name="Label1" Content="" />

        </Grid>
    </Grid>
</UserControl>

およびユーザーコントロール3

<UserControl
    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"
    mc:Ignorable="d"
    x:Class="wpfapplication.UCSearchQALibrary"
    x:Name="UserControl"
    d:DesignWidth="758" d:DesignHeight="486.905">

    <Grid x:Name="LayoutRoot" >
        <GroupBox Header="Question and Answer Master Library" >                     
        <Grid Margin="8">
            <WrapPanel Margin="4,0,0,0" VerticalAlignment="Stretch">

            <ListView Margin="4,10,0,10" x:Name="lvQA"  ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" AlternationCount="2" VerticalAlignment="Stretch" Height="420">
                            <ListView.View>
                                <GridView>
                                    <GridViewColumn >
                                        <GridViewColumn.HeaderTemplate>
                                            <DataTemplate>
                                                <Label Content="Q &amp; A Search Result : " FontSize="12" FontWeight="Bold" Margin="0,4,0,4"/>
                                            </DataTemplate>                                            
                                        </GridViewColumn.HeaderTemplate>
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <StackPanel>
                                                    <Button Content="{Binding  Path=QuestionText}" Margin="4,10,8,4" Style="{StaticResource HyperlinkLikeButton}" VerticalAlignment="Top" Click="Button_Click" CommandParameter="{Binding Path=QuestionID}" />
                                                    <TextBlock TextWrapping="Wrap" Margin="4,0,4,4" HorizontalAlignment="Stretch"><Run Text="{Binding Path=AnswerText}"/></TextBlock>
                                                </StackPanel>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                </GridView>
                            </ListView.View>                            
                        </ListView>
                    </WrapPanel>
        </Grid>
        </GroupBox>
    </Grid>
</UserControl>

ユーザーコントロール2は、新しい質問の回答を追加するために使用されます。ユーザーコントロール3は、作成済みの質問の回答のリストを提供します。ユーザーコントロール1には、ユーザーコントロール2と3の両方があります。一度にユーザーコントロール2または3のいずれかが表示されます。ユーザーコントロール1では、リストQAボタンをクリックすると、ユーザーコントロール3が表示され、ユーザーコントロール2は非表示になります。[新しいQAの追加]ボタンをクリックすると、ユーザーコントロール2が表示され、ユーザーコントロール3は非表示になります。

ここで、ユーザーコントロール3に、リストビューの各行に関連付けるボタンがあります。そのボタンをタップ/クリックすると、ユーザーコントロール2を表示し、ユーザーコントロール2内のラベルを特定のコンテンツにバインドする機能が必要です。

ルーティングされたイベントを試しました。

ユーザーコントロール3で追加しました...

        public static readonly RoutedEvent AddClickEvent = EventManager.RegisterRoutedEvent("AddClick", RoutingStrategy.Direct, typeof(RoutedEventHandler), typeof(Button));

        public event RoutedEventHandler AddClick
        {
            add { AddHandler(AddClickEvent, value); }
            remove { RemoveHandler(AddClickEvent, value); }
        }

        void RaiseAddClickEvent()
        {
            RoutedEventArgs newEventArgs = new RoutedEventArgs(UCSearchQALibrary.AddClickEvent);
        }
        private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            // TODO: Add event handler implementation here.
            //Thread newWindowThread = new Thread(new ThreadStart(ThreadStartingPoint));
            //newWindowThread.SetApartmentState(ApartmentState.STA);
            //newWindowThread.IsBackground = true;
            //newWindowThread.Start();    
            RaiseEvent(new RoutedEventArgs(AddClickEvent));
        }

そしてユーザーコントロール1に追加しました...

local:UCSearchQALibrary.AddClick="dCB_Props_AddClick"

private void dCB_Props_AddClick(object sender, System.Windows.RoutedEventArgs e)
{
     MessageBox.Show("This Works");
}        

どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

1

usercontrol1にルーティングされるイベントを作成できます。ただし、より良い方法は、ビューモデルを作成することです(3つのユーザーコントロールすべてに1つを使用することもできます)。

したがって、ビューモデルにVisibilityタイプの2つのプロパティを作成し、usercontrol1と2をそれらにバインドします。(バインディングはusercontrol1にあります)。

于 2012-08-07T10:45:52.270 に答える