他のケースを読んだことがあります。このメッセージについてのStackOverflowはありますが、私の問題に変更を適用する方法がわかりません。私はWPFで作られた小さなアプリケーションを持っていて、xamlの私の無知はその犠牲を払っています。私はコンパイルし、すべては問題ありませんが、VS2015の出力ウィンドウでデバッグモードで実行しているときに表示されます System.Windows.Data Error:4: 'ElementName = lbEnfermedades'という参照でバインディングのソースを見つけることができません。 BindingExpression:(パスなし); DataItem = null;ターゲット要素は 'MenuItem'(Name = '')です。ターゲットプロパティが 'CommandTarget'(タイプ 'IInputElement') 私はコンテキストメニューに問題があるだけではないことがわかります。示唆したように私はRoutedUICommandを使用してクラスを作成しました:コンテキストメニューを使用しているときに参照付きのバインディングのソースが見つかりません
namespace Maqueta
{
class CommandLibrary
{
private static RoutedUICommand relacionados = new RoutedUICommand("Relacionados", "BuscarRelacionados", typeof(CommandLibrary));
public static RoutedUICommand BuscarRelacionados
{
get { return relacionados; }
}
}
}
私は多分、私がやっているコントロールのネスティングが禁止され、XAMLのこの部分を持っていますか? TabControlので、私は、リストボックスを配置し、コンテキストメニューの添付:これらのメソッドは決してありません
private void OnBuscarRelacionadosExecute(object sender, ExecutedRoutedEventArgs e)
{
ListBox lb = sender as ListBox;
if (lb != null)
{
if (lb.SelectedItem != null)
{
//lb.Items.Remove(lv.SelectedItem);
MessageBox.Show(lb.SelectedItem.ToString());
e.Handled = true;
}
}
}
private void CanBuscarRelacionadosExecute(object sender, CanExecuteRoutedEventArgs e)
{
ListBox lb = sender as ListBox;
if (lb != null)
{
e.CanExecute = true;//lb.SelectedItem != null;
e.Handled = true;
}
}
:私もここでは例として、別のポストを使用して、呼び出されるべきルーチンを作成し
<TabControl x:Name="tabControl" Grid.Column="1" HorizontalAlignment="Left" Height="287" Margin="10,243,0,0" VerticalAlignment="Top" Width="709" TabStripPlacement="Top" Grid.ColumnSpan="3">
<TabItem Header="Enfermedades">
<ListBox x:Name="lbEnfermedades" Grid.Column="1" Grid.ColumnSpan="3">
<ListBox.ContextMenu>
<ContextMenu IsEnabled="True" IsManipulationEnabled="True">
<MenuItem Command="local:CommandLibrary.BuscarRelacionados"
CommandTarget="{Binding ElementName=lbEnfermedades}"
Header="BuscarRelacionados" IsEnabled="True"/>
</ContextMenu>
</ListBox.ContextMenu>
<ListBox.CommandBindings>
<CommandBinding Command="local:CommandLibrary.BuscarRelacionados" CanExecute="CanBuscarRelacionadosExecute" Executed="OnBuscarRelacionadosExecute" />
</ListBox.CommandBindings>
<CheckBox/>
</ListBox>
</TabItem>
<TabItem Header="Medicamentos">
<ListBox x:Name="lbMedicamentos" Grid.Column="1" Grid.ColumnSpan="3"/>
</TabItem>
<TabItem Header="Procedimientos">
<ListBox x:Name="lbProcedimientos" Grid.Column="1" Grid.ColumnSpan="3"/>
</TabItem>
</TabControl>
をリストボックスを右クリックするとコンテキストメニューがグレー表示(無効)になります。これは、「バインディングのソースを見つけることができません」というメッセージが原因であると私は理解しています。私が他の投稿(例えば、 "相対的なバインディングを使用する")で見られるヒントは、私の謎であるため、xamlバインディングの説明を指摘してください。マイクロソフトのサイトでも、決定的な文書を見つけることができませんでした。コンテキストメニュを使用する方がより直感的な作業だったらと思います。ありがとう。
クラウディオ。