我在xaml中有一个窗口:
private void processImg(BufferedImage ipimage){
Tesseract it = Tesseract();
it.setDatapath(PropertiesService.getProperty(PropertiesService.PROPERTIES_COMPONENTS, "tesseractServerPath") + "\\" + "tessdata");
String str = it.doOCR(ipimage);
}
工具栏是一个从usercontrol继承的类。在toolbar.xaml中,我有一个带有命令的按钮。
<view:ToolBar DataContext="{Binding}"/>
<Grid>
<ListView>
<ListView.View>
<GridView>
<GridViewColumn>
....//all the columns
</GridView>
</ListView.View>
</ListView>
</Grid>
每次单击该按钮时,我都希望将列表视图的列标题传递给命令。但由于它们完全分开,我无法解决如何连接工具栏和列表视图的问题。有任何想法吗?谢谢!
答案 0 :(得分:0)
首先,您将在ToolBar控件中需要一个新的DependencyProperty。您可以在此处阅读有关DependencyProperties的信息:
https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/dependency-properties-overview
在您的情况下,此DependencyProperty将是将成为列列表的属性。由于它是DependencyProperty,因此您可以在Xaml中将值绑定到它,并从ToolBar控件中检索这些列。
现在,关于如何将列列表绑定到DependencyProperty,您有两个选择。第一个是将其直接绑定到您的ListView。看起来像这样:
<view:ToolBar YourDependencyProperty={Binding TheListOfColumns, ElementName=MyGridView}"/>
<Grid>
<ListView>
<ListView.View>
<GridView x:Name="MyGridView">
<GridViewColumn>
....//all the columns
</GridView>
</ListView.View>
</ListView>
</Grid>
另一个选项就像BionicCode在他对问题的评论中描述的那样,方法是将列保留在ViewModel中并绑定到ViewModel属性。但是为此,您将不得不在ViewModel中而不是Xaml中创建列。绑定看起来像这样:
<view:ToolBar YourDependencyProperty={Binding ListOfColumnsPropertyFromTheViewModel}"/>
希望有帮助!