WPF-C#使用体会

Trigger Binding两种方式 实现某一pannel 或者button的 显示与隐藏

1.style trigger
#设置pannel style


           <Style x:Key="PublicBuildIsShow" TargetType="FrameworkElement">
                <Setter Property="RenderTransformOrigin" Value="0.5,0.5">
                </Setter>
                <Setter Property="Cursor" Value="Hand">

                </Setter>
                <Setter Property="RenderTransform">
                    <Setter.Value>
                        <ScaleTransform   CenterX="0.5" CenterY="0.5" ScaleX="1" ScaleY="1"/>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsChecked, ElementName= publicBuilding}" Value="True">
                        <Setter Property="Visibility" Value="Visible" />
                    </DataTrigger>
                    <DataTrigger Binding="{Binding IsChecked, ElementName= publicBuilding}" Value="False">
                        <Setter Property="Visibility" Value="Collapsed" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>

#设置radio button style
TargetType改成button就可以

TargetType="RadioButton"

2.binding 实现

<RadioButton Margin="2" Visibility="{Binding Path=PublicBuildingIsShow,Mode=TwoWay}">第一个大仓库</RadioButton>


viewmodel:
        /// <summary>
        /// 是否显示下拉列
        /// </summary>
        public string PublicBuildingIsShow {
            get => _PublicBuildingIsShow;
            set {
                SetProperty(ref _PublicBuildingIsShow, value);
            }
        }
                /// <summary>
        /// 
        /// </summary>
        public string BuildingCategory {
            get => _BuildingCategory;
            set {
                if (null != value)
                {
                    SetProperty(ref _BuildingCategory, value);
                    SubItemInfos[_SelectSubIterm.Name].BuildCate = _BuildingCategory;
                }
                if (value == "希望的value")
                {
                    PublicBuildingIsShow = "Visible";
                }
                else
                {
                    PublicBuildingIsShow = "Collapsed";
                }
            }

        }
        private string _BuildingCategory;

3.Json序列化实现 null太多的话 会无法实例化对象 空值的话就不返回null了直接过滤掉吧
在这里插入图片描述
4.异步post ui界面加载等待实践

            //Tip("主线程开始");
            //System.Threading.Tasks.Task<string> task = Task<string>.Run(() => {
            //    Thread.Sleep(1000);
            //    Tip("第一个任务");
            //    return Thread.CurrentThread.ManagedThreadId.ToString();
            //});

            //task.GetAwaiter().OnCompleted(() =>
            //{
            //    Console.WriteLine(task.Result);
            //});
            //task.ContinueWith(m => { Tip("第一个任务结束啦!我是第二个任务"); });
            //Thread.Sleep(4000);
            //Tip("主线程结束");
            Loading = true;

            //Tip("主线程开始");
            System.Threading.Tasks.Task<string> task = Task<string>.Run(() => {
                postFile();
                return Thread.CurrentThread.ManagedThreadId.ToString();
            });

            task.GetAwaiter().OnCompleted(() => {
                Loading = false;
                //Tip(task.Result);
            });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值