我想要的是: 我希望在我的Silverlight 4应用程序中有一个ScrollView,它与内容一起在Height中增长,但如果它会比它的容器更高,它会显示一个滚动条.
我发现的解决方案: 我发现很多问题,其中解决方案是拉伸Scrollviewer,但这不是我想要的.Scrollviewer应该尽可能小.
我的问题: 为了使滚动查看器顶部更加困难,可以找到一个标题,它是一个具有静态高度的堆栈面板.
解决方案Approch 1: 我首先尝试使用普通的XAML,但我无法弄清楚它应该如何工作.
<Grid Height="Auto" x:Name="myGrid" >
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Background="AliceBlue">
<!-- Dummy Header-->
</StackPanel>
<ScrollViewer Grid.Row="1" Height="Auto">
<Button Width="100" Height="50" Click="Button_Click" />
<!-- onClick the button will switch between height="600" and height="50"
Code:
private void Button_Click(object sender, RoutedEventArgs e)
{
if (sender is Button)
{
Button btn = (Button)sender;
btn.Height = (btn.Height == 50) ? 600 : 50 ;
}
}
--> …Run Code Online (Sandbox Code Playgroud) 我有一个XML文件:
<?xml version="1.0" encoding="us-ascii"?>
<TestItems xmlns="http://www.blogger.com">
<TestItem correct="0" incorrect="0">
<Question>question</Question>
<Answer>answer</Answer>
<Tags>test1;test2</Tags>
</TestItem>
<TestItem correct="0" incorrect="0">
<Question>question3</Question>
<Answer>answer3</Answer>
<Tags>tagA;tagB;tagC</Tags>
</TestItem>
</TestItems>
Run Code Online (Sandbox Code Playgroud)
我也有一个对象:
class TestItem
{
public string Question { get; set; }
public string Answer { get; set; }
public int NumberCorrect { get; set; }
public int NumberIncorrect { get; set; }
public string Tags { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我用来将数据读入内存的代码:
XDocument ktdb = XDocument.Load("KTdb.xml");
XNamespace ns = ktdb.Root.Name.Namespace;
var testItems = from item in ktdb.Descendants(ns + "TestItem")
select …Run Code Online (Sandbox Code Playgroud) 我在XAML中有一个文本框:
<TextBox Text="blah"
Name="blah"
LostFocus="blah_OnLostFocus"
KeyDown="blah_OnKeyDown"/>
Run Code Online (Sandbox Code Playgroud)
.cs文件声明了以下事件:
private void blah_OnKeyDown(object sender, KeyEventArgs e)
{
TextBox t = sender as TextBox;
int i = 0;
if(e.Key == Key.Delete)
i = 1;
}
Run Code Online (Sandbox Code Playgroud)
当我按下仿真器键盘上的退格键时,将忽略该事件.如果我按任何其他按钮,它将被触发.此外,当我为KeyUp事件使用相同的事件主体时,退格键会触发它.
如何跟踪KeyDown事件按下退格键的时间?为什么按退格键不会触发KeyDown事件?
谢谢.
我正在用 C#/WPF 编写一个应用程序,并试图弄清楚如何将网格列定义的宽度数据绑定到屏幕宽度的一小部分。这可能吗?基本上我想要这样的东西:
网格 = 2x2
第 1 行高度 = 屏幕高度的 2/3
第 2 行高度 = 屏幕高度的 1/3
第 1 行宽度 = 屏幕宽度的 2/3
第 2 行宽度 = 屏幕宽度的 1/3
我认为这正确地将全宽绑定到列定义:
<ColumnDefinition Width="{Binding ElementName=Window1, Path=Width}"/>
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么做是对它通过数据绑定获得的值执行操作......这甚至可能吗?我觉得这是我应该能够编码到 XAML 中的东西,而不必以编程方式实现,但我对 UI 设计几乎没有经验:(我想要这样的东西:
<ColumnDefinition Width="{Binding ElementName=Window1, Path=Width} * 2 / 3"/>
Run Code Online (Sandbox Code Playgroud)
但这是无效的
我应该编写一个函数来在屏幕调整大小时重新布局 UI 元素吗?我觉得那是多余的……还是有一些我不知道的简单方法?欢迎任何输入!谢谢!