我有一个使用导航窗口和一组页面的小型应用程序。我的应用程序本身不是浏览器,因此我不希望用户能够通过按 F5 刷新页面。有没有办法在我的应用程序中禁用此键?非常感谢大家。
我有一个带有列表框和内容控件的WPF应用程序.contentcontrol内容绑定到列表框,并具有一个datatemplate,显示一个文本框,其内容绑定到所述列表框中所选项的变量.到目前为止,一切运作良好,即当我从列表框中选择一个项目时,文本框内容会更改为变量的当前值.但是,如果在运行时我更改了变量的值,则文本框不会更新,除非我选择另一个列表框项目,然后再次选择原始项目.关于我做错了什么或者我在这里缺少什么的想法?我以为文本框的价值会自动改变?非常感谢您的帮助.
这是示例(MainWindow.xaml)
<Grid>
<ListBox Height="100" HorizontalAlignment="Left" Margin="12,105,0,0" x:Name="listBox1" VerticalAlignment="Top" Width="120" />
<ContentControl Height="120" HorizontalAlignment="Left" Margin="191,105,0,0" Name="contentControl1" VerticalAlignment="Top" Width="300" ContentTemplate="{DynamicResource MyDataTemplate}" Content="{Binding SelectedItem,ElementName=listBox1}"/>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="202,56,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
C#代码:
public MainWindow()
{
InitializeComponent();
listBox1.Items.Add(new MyItem(32));
listBox1.Items.Add(new MyItem(45));
listBox1.Items.Add(new MyItem(5));
}
private void button1_Click(object sender, RoutedEventArgs e)
{
((MyItem)listBox1.SelectedItem).Value = 4564654;
}
Run Code Online (Sandbox Code Playgroud)
额外课程:
public class MyItem
{
public MyItem(Int32 Value)
{
this.Value = Value;
}
public Int32 Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和模板:
我确定我遗漏了一些事情,比如通知UI来源的变化或以某种方式调用刷新.这是我的真实问题的更简化版本,其中包括控件和标签等,当源更改时必须刷新.干杯:)