出于某种原因,当折叠或扩展时,子项Expander(放置在StackPanel另一个内部Expander)导致父Expander提升其Expanded或Collapsed事件.
任何人都知道这是为什么或如何改变它?我只对父母的事件感兴趣.
这是一些测试XAML:
<Expander Header="Outer" Expanded="Expander_Expanded" Collapsed="Expander_Collapsed">
<StackPanel>
<Expander Header="Inner1">
<Canvas Height="100" Width="100" Background="Blue" />
</Expander>
<Expander Header="Inner2">
<Canvas Height="100" Width="100" Background="Red" />
</Expander>
</StackPanel>
</Expander>
Run Code Online (Sandbox Code Playgroud)
这是代码隐藏:
private void Expander_Expanded(object sender, RoutedEventArgs e)
{
MessageBox.Show("expanded");
}
private void Expander_Collapsed(object sender, RoutedEventArgs e)
{
MessageBox.Show("collapsed");
}
Run Code Online (Sandbox Code Playgroud)
当您运行此操作时,如果展开父级,则会获得"扩展"消息框,正如您所期望的那样.但是当你然后展开其中一个孩子时,你会再次收到消息框.
Expanded活动的文档说:
当IsExpanded属性从false更改为true时,会发生Expanded事件
但显然IsExpanded属性在父Expander上没有变化.
为什么会发生这种情况,有什么想法吗?
我有一个"工具栏"类型控件,基本上是一组按钮,用于其他按钮的"组".按钮和组沿窗口顶部水平排列.
我想是有,当用户点击这些按钮中的一个用于组中的一个,其他按钮中的该组的列表(可能是一个ItemsPanel)从为0宽度膨胀以然而是宽它需要对按住按钮列表.
所以你要从这样的事情开始:
_______
|G|G|G|
-------
Run Code Online (Sandbox Code Playgroud)
其中G是一个组按钮.如果你点击中间组按钮,你最终会得到这个:
_______________
|G|G|B|B|B|B|G|
---------------
Run Code Online (Sandbox Code Playgroud)
原始组按钮仍在那里,所选组的新按钮已"增长"到位.
实现这一目标的最佳方法是什么?我应该使用ListBox作为外部容器,并在其中一个ListBoxItems上更改IsSelected时触发动画吗?如果是这样,我如何编写从0宽度(或隐藏)到"全宽"(无论可能是什么)的动画?
谢谢!
我有一个你可以想象的场景:
从100像素宽,1000像素高的图像开始.除了该图像,您还有一组该图像的裁剪部分.每个部分宽100像素,高100像素.该部分中包含的图像部分各不相同.例如,您可能有一个从最顶部(像素0)开始,然后一个在垂直像素3处开始,然后一个在垂直像素9处开始,依此类推.
我需要做的是找到一种方法来查看那些较小的图片集,并选出最小数量的部分,这些部分可以让我覆盖原始图像.
几个笔记:
任何人都能指出我在正确的方向吗?我可以做这种蛮力......但我认为有更好的方法.
Umanaged C++:
int foo(int ** New_Message_Pointer);
Run Code Online (Sandbox Code Playgroud)
我如何将其编组到C#?
[DllImport("example.dll")]
static extern int foo( ???);
Run Code Online (Sandbox Code Playgroud) 在我的Windows Phone应用程序中,我在页面上有两个LongListSelectors并排.我想这样做,以便当用户滚动其中一个时,另一个滚动相同的数量.
两者的LongListSelectorsItemTemplates总是具有相同的高度.您可以将此视为模仿Excel中的冻结列(左侧LongListSelector仅垂直滚动,右侧水平和垂直滚动.
任何人都可以指出我正确的方向如何做到这一点?我愿意在代码隐藏中做这件事,或者如果不能用绑定做的话.
我正在尝试使用DataTriggerBehaviorBehaviors SDK中的一个.但它似乎与枚举无关......或者我做错了什么.
您可以假设DataContext这些示例是这样的(INotifyPropertyChanged已实现,但我不打算在此处显示):
public class MyDataClass
{
public MyEnum ItemCommand { get; set; }
public string ItemCommandString { get; set; }
}
public enum MyEnum
{
EnumValue1
}
_Button.DataContext = new MyDataClass() { ItemCommand = MyEnum.EnumValue1,
ItemCommandString = "EnumValue1" };
Run Code Online (Sandbox Code Playgroud)
以下代码不起作用(尝试指定枚举值并检查ItemCommand枚举属性):
<ToggleButton x:Name="_Button">
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{Binding ItemCommand}"
Value="EnumValue1">
<Core:ChangePropertyAction PropertyName="Command"
TargetObject="{Binding ElementName=_Button}"
Value="{x:Null}">
</Core:ChangePropertyAction>
</Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</ToggleButton>
Run Code Online (Sandbox Code Playgroud)
并且此代码(检查枚举资源)也不起作用:
<UserControl.Resources>
<local:MyEnum x:Key="_MyEnumValue">EnumValue1</local:MyEnum>
</UserControl.Resources>
<ToggleButton x:Name="_Button">
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{Binding ItemCommand}"
Value="{StaticResource _MyEnumValue}">
<Core:ChangePropertyAction PropertyName="Command"
TargetObject="{Binding ElementName=_Button}" …Run Code Online (Sandbox Code Playgroud) 我有两个通用委托,我试图定义编译器抱怨它们是重复的,但在我看来是完全不同的。我在做什么/理解错了?
delegate TReturn foo<TParameter, out TReturn>(TParameter parameter, IItem item);
Run Code Online (Sandbox Code Playgroud)
和
delegate TReturn foo<TParameter, out TReturn>(TParameter parameter, int field, IItem item);
Run Code Online (Sandbox Code Playgroud)
如果我向第二个委托添加一个新的通用参数,则一切正常。
delegate TReturn foo<TParameter, TField, out TReturn>(TParameter parameter, TField field, IItem item) where TField struct
Run Code Online (Sandbox Code Playgroud)
但这似乎并不正确。我将始终为字段传递一个 int - 它不应该是一个泛型。
我的TreeViewItem.Items数据模板包含2个文本框.当我在第一个文本框中按Tab键时,焦点将转到第二个文本框.我希望当我在第二个文本框上按Tab键时 - 关注下一个TreeViewItem子项目上的第一个文本框,如果TreeViewItem没有下一个子项目,则焦点将在下一个TreeViewItem上的第一个子项目上进行.怎么做?
<TreeView Name="resultsTv"
ItemTemplate="{StaticResource excerciseResultDataTemplate}"
KeyboardNavigation.TabNavigation="Contained">
<TreeView.ItemContainerStyle>
<Style>
<Setter Property="TreeViewItem.IsExpanded" Value="True"/>
<Setter Property="KeyboardNavigation.TabNavigation" Value="Contained"></Setter>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
<HierarchicalDataTemplate x:Key="excerciseResultDataTemplate" ItemTemplate="{StaticResource setDataTemplate}" ItemsSource="{Binding Sets}">
<StackPanel Orientation="Horizontal" KeyboardNavigation.TabNavigation="Continue">
<Label Content="{Binding Name}"></Label>
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate x:Key="setDataTemplate">
<StackPanel Orientation="Horizontal" KeyboardNavigation.TabNavigation="Continue">
<TextBox Width="50" Text="{Binding Weight}"/>
<TextBox Width="50" Text="{Binding Repeats"/>
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud) 下面是一段试图发布到本地服务器上的PHP脚本的代码片段.我正在将数据传回服务器的MySQL表,因为数据量非常小,我想我会使用HttpClient将数据嵌入到URL参数中.
但是,即使我从服务器获得的响应是正常的(HTTP代码= 200),很明显服务器端PHP脚本没有获得正确格式化的数据(对MySQL表没有影响).但是,当我在浏览器中手动输入URL + args时,如下所示:
http://10.0.0.13/jobs_returndata_test.php?jobnum=189193&pnum=3&entime=13:00&extime=14:00
Run Code Online (Sandbox Code Playgroud)
例如,一切正常(PHP脚本正确写入MySQL表).
我的问题:我有没有办法真正查看HttpClient发送的内容?(即HttpPost对象的整个.toString内容?).这是Android端代码段:
// Create a new HttpClient and Post Header, send data as args to PHP file
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.0.13/jobs_returndata.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("jobnum",convertSimple(jobNum)));
nameValuePairs.add(new BasicNameValuePair("pnum",convertSimple(rowNum)));
nameValuePairs.add(new BasicNameValuePair("entime",enteredInTime));
nameValuePairs.add(new BasicNameValuePair("extime",enteredOutTime));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Log.i("HTTP Post", "Execute Post sending jobnum="+ convertSimple(jobNum) +
"&pnum="+ convertSimple(rowNum) + "&entime=" + enteredInTime
+ "&extime=" + enteredOutTime);
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
Log.i("HTTP Post", "Response …Run Code Online (Sandbox Code Playgroud) 我需要在按下UIButton时打开一个ViewController,为此我使用以下代码:
NSString * storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self presentViewController:vc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
当它采取最后一行
[self presentViewController:vc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
它给我以下错误:
- [UIView setShowsFPS:]:无法识别的选择器发送到实例0x9bd5610 2013-07-16 14:40:52.728 ChainZoo [3026:a0b] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [UIView setShowsFPS:]:无法识别的选择器发送到实例0x9bd5610'
谁知道错误?提前致谢!!
c# ×4
wpf ×3
xaml ×2
algorithm ×1
android ×1
animation ×1
c++ ×1
delegates ×1
enums ×1
events ×1
expander ×1
generics ×1
http-post ×1
httpclient ×1
marshalling ×1
navigation ×1
storyboard ×1
string ×1
tabs ×1
treeview ×1
uistoryboard ×1
url ×1