以下是我的public class ReportHeaderCallBack implements FlatFileHeaderCallback {
/* (non-Javadoc)
* @see org.springframework.batch.item.file.FlatFileHeaderCallback#writeHeader(java.io.Writer)
*/
public void writeHeader(Writer writer) throws IOException {
writer.write("Script"+","+","+"Date"+","+"Open"+","+"High"+","+"Low"+","+"Close"+","+"True range"+","+"ID"+","+"NR");
}
}
<bean id="csvFileWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
<property name="resource" ... ></property>
<property name="lineAggregator" ...></property>
<property name="headerCallback">
<bean class="com.equities.batch.ReportHeaderCallBack"/>
</property>
</bean>
TextBox
和我的<TextBox Text="Hello" />
ComboBox
现在我可以使用后面的代码清除TextBox中的文本。如下所示
<ComboBox VerticalAlignment="Center" Name="srchType" SelectedIndex="0" SelectionChanged="srchType_SelectionChanged">
<ComboBoxItem Content="Question" />
<ComboBoxItem Content="Value" />
</ComboBox>
但我希望在private void srchType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
asb.Text = "";
}
中执行此操作,而不是使用CodeBehind,因为我只有很少的组合框,并且每个选择更改事件都必须执行某些操作。 (简单的操作,但它们与清除文本框不同)。
有人能指出我如何在xaml
中实现这一目标。或者这甚至可能吗?
答案 0 :(得分:2)
您可以使用XAML Behaviors
:
声明所需的命名空间:
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
并使用它
<StackPanel>
<TextBox x:Name="myTextBox"
Text="Hello"/>
<ComboBox SelectedIndex="0">
<i:Interaction.Behaviors>
<i:BehaviorCollection>
<core:EventTriggerBehavior EventName="SelectionChanged">
<core:ChangePropertyAction PropertyName="Text"
TargetObject="{Binding ElementName=myTextBox}"
Value="{Binding Empty, Source={StaticResource EmptyString}}">
</core:ChangePropertyAction>
</core:EventTriggerBehavior>
</i:BehaviorCollection>
</i:Interaction.Behaviors>
<x:Int32>1</x:Int32>
<x:Int32>2</x:Int32>
<x:Int32>3</x:Int32>
<x:Int32>4</x:Int32>
</ComboBox>
</StackPanel>
但是,你可以看到
Value="{Binding Empty, Source={StaticResource EmptyString}}"
默认情况下,您不能在XAML中声明空字符串(可能在UWP中更改了一些内容),因此我为它创建了辅助类:
public class EmptyString : DependencyObject
{
public string Empty
{
get { return (string)GetValue(EmptyProperty); }
}
public static readonly DependencyProperty EmptyProperty =
DependencyProperty.Register("Empty", typeof(string), typeof(EmptyString), new PropertyMetadata(string.Empty));
}
并在页面上声明:
<Page.Resources>
<local:EmptyString x:Name="EmptyString"/>
</Page.Resources>
答案 1 :(得分:2)
答案与Andrii发布的内容非常接近,但UWP存在一些差异。
首先,Behaviors SDK不是内置的UWP,但必须与NuGet分开下载。
您可以使用以下命令进行安装:
Install-Package Microsoft.Xaml.Behaviors.Uwp.Managed
或者只需使用NuGet包管理器并搜索Microsoft.Xaml.Behaviors.Uwp.Managed
。
安装后,您只需将XAML using语句添加到页面顶部:
<Page ...
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core" />
并在需要时使用ChangePropertyAction
更改值。在UWP XAML中,您实际上通常可以使用空字符串作为值,它可以按预期工作。
<ComboBox VerticalAlignment="Center" Name="srchType" SelectedIndex="0">
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="SelectionChanged">
<core:ChangePropertyAction
TargetObject="{Binding ElementName=TheTextBoxToUpdate}"
PropertyName="Text" Value="" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
<ComboBoxItem Content="Question" />
<ComboBoxItem Content="Value" />
</ComboBox>