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 & 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");
}
どんな助けでも大歓迎です。
ありがとう。