我有一个Accordion Control,我绑定值并在DataTemplate中显示它们。 这就是我在用户控件中的含义:
<layoutToolkit:Accordion x:Name="MyAccordion">
<layoutToolkit:Accordion.ItemTemplate>
<DataTemplate >
<TextBlock x:Name="Header" Text="{Binding Header}"/>
</DataTemplate>
</layoutToolkit:Accordion.ItemTemplate>
<layoutToolkit:Accordion.ContentTemplate>
<DataTemplate>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="Content" Text="{Binding Content}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button x:Name="MyMethod" Content="Method" Click="MyMethod"/>
</StackPanel>
<StackPanel>
</DataTemplate>
</layoutToolkit:Accordion.ContentTemplate>
我的绑定工作正常,现在我希望能够使用文本块中的文本应用于代码中的方法,但我希望值根据打开的Accordion而有所不同。 是否有可能实现这一目标?
这就是我的代码隐藏的方式:
public MyUserCOntrol()
{
InitializeComponent();
this.MyAccordion.SelectionMode = AccordionSelectionMode.ZeroOrOne;
//method to fill the accordion
this.MyAccordion.ItemsSource = MainWindow._RE.ListActionsParType;
}
public void MyMethod(object sender, EventArgs e)
{
string TxtBlockContent = ....;
// so i can use this value in other operations
}
我想创建一个方法(这里是我的myMethode),我将在按钮点击时应用该方法,并根据打开的手风琴使用此值
答案 0 :(得分:0)
如果您需要获取DataTemplate中显示的TextBlock文本,那么您可以使用以下方式实现它,
//在XAML中使用的文本块中
var debug = process.env.NODE_ENV !== "production";
var webpack = require('webpack');
module.exports = {
context: __dirname,
devtool: debug ? "inline-sourcemap" : null,
entry: "./src/scrable.js",
output: {
path: __dirname,
filename: "bundle.js",
},
plugins: debug ? [] : [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
],
module: {
loaders: [
{ test: /\.css$/, loader: 'style-loader!css-loader' }
]
}
};
//在代码隐藏
中<TextBlock Loaded="Txt_Loaded">
只要将TextBlock加载到视图中,就会触发上述事件。因此,您可以像上面的代码一样在TextBlock中获取文本。
答案 1 :(得分:0)
使用“BindingContextChanged”事件来获取发件人(实际视图,TextBlock)。