小编Tim*_*Tim的帖子

儿童扩张者提升父母扩张者的扩张和倒塌事件?

出于某种原因,当折叠或扩展时,子项Expander(放置在StackPanel另一个内部Expander)导致父Expander提升其ExpandedCollapsed事件.

任何人都知道这是为什么或如何改变它?我只对父母的事件感兴趣.

这是一些测试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上没有变化.

为什么会发生这种情况,有什么想法吗?

c# wpf events expander

6
推荐指数
1
解决办法
1706
查看次数

从隐藏到全尺寸动画控制的最简单方法?

我有一个"工具栏"类型控件,基本上是一组按钮,用于其他按钮的"组".按钮和组沿窗口顶部水平排列.

我想是有,当用户点击这些按钮中的一个用于组中的一个,其他按钮中的该组的列表(可能是一个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宽度(或隐藏)到"全宽"(无论可能是什么)的动画?

谢谢!

wpf animation

5
推荐指数
1
解决办法
1680
查看次数

最大化覆盖范围的算法,最小化项目使用?

我有一个你可以想象的场景:

从100像素宽,1000像素高的图像开始.除了该图像,您还有一组该图像的裁剪部分.每个部分宽100像素,高100像素.该部分中包含的图像部分各不相同.例如,您可能有一个从最顶部(像素0)开始,然后一个在垂直像素3处开始,然后一个在垂直像素9处开始,依此类推.

我需要做的是找到一种方法来查看那些较小的图片集,并选出最小数量的部分,这些部分可以让我覆盖原始图像.

几个笔记:

  1. 图像的内容并不重要.它确实匹配重要的坐标.
  2. 重建时图像中永远不会有间隙,但可能没有足够的碎片到达底部.
  3. 各部分之间会有很多重叠.事实上,有些情况下两个部分之间只有一个或两个(垂直)差异.

任何人都能指出我在正确的方向吗?我可以做这种蛮力......但我认为有更好的方法.

algorithm

5
推荐指数
1
解决办法
716
查看次数

如何编组指向int的指针?

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)

c# c++ marshalling

5
推荐指数
1
解决办法
997
查看次数

绑定/绑定两个LongListSelectors的滚动位置

在我的Windows Phone应用程序中,我在页面上有两个LongListSelectors并排.我想这样做,以便当用户滚动其中一个时,另一个滚动相同的数量.

两者的LongListSelectorsItemTemplates总是具有相同的高度.您可以将此视为模仿Excel中的冻结列(左侧LongListSelector仅垂直滚动,右侧水平和垂直滚动.

任何人都可以指出我正确的方向如何做到这一点?我愿意在代码隐藏中做这件事,或者如果不能用绑定做的话.

c# xaml windows-phone-7 windows-phone windows-phone-8

5
推荐指数
1
解决办法
613
查看次数

DataTriggerBehavior不适用于Enum?

我正在尝试使用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)

enums xaml windows-runtime windows-store-apps

5
推荐指数
1
解决办法
1878
查看次数

通用委托重复定义 - 为什么?

我有两个通用委托,我试图定义编译器抱怨它们是重复的,但在我看来是完全不同的。我在做什么/理解错了?

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 - 它不应该是一个泛型。

c# generics delegates

4
推荐指数
1
解决办法
538
查看次数

WPF TreeView中的键盘导航

我的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)

navigation wpf treeview tabs

3
推荐指数
1
解决办法
5869
查看次数

如何查看从httppost发送的字符串?

下面是一段试图发布到本地服务器上的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)

string url android httpclient http-post

2
推荐指数
1
解决办法
4643
查看次数

- [UIView setShowsFPS:]:无法识别的选择器错误

我需要在按下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'

谁知道错误?提前致谢!!

storyboard uiviewcontroller viewcontroller uistoryboard

2
推荐指数
1
解决办法
2188
查看次数