Przeglądaj źródła

20260303001 添加了符合MVVM设计理念的按钮颜色切换模式

向羽 孟 1 miesiąc temu
rodzic
commit
74dbdad10a

+ 1 - 1
MvvmScaffoldFrame48.DLL/ThreadManager/ThreadManager.cs

@@ -142,7 +142,7 @@ namespace MvvmScaffoldFrame48.DLL.ThreadManager
         /// </summary>
         public void StopCameraGroup(int cameraId)
         {
-            if (cameraId >= 0 && cameraId < 4)
+            if (cameraId >= 0 && cameraId < _cameraGroups.Count())
             {
                 _cameraGroups[cameraId].Stop();
             }

+ 38 - 2
MvvmScaffoldFrame48.VIEWMODEL/ViewModel/CustomControlViewModel.cs

@@ -43,10 +43,35 @@ namespace MvvmScaffoldFrame48.ViewModel.ViewModel
                 }
             }
         }
+
+        private bool _isActivated1;
+        public bool IsActivated1
+        {
+            get => _isActivated1;
+            set
+            {
+                _isActivated1 = value;
+                OnPropertyChanged(nameof(IsActivated1));
+            }
+        }
+
+        private bool _isActivated2;
+        public bool IsActivated2
+        {
+            get => _isActivated2;
+            set
+            {
+                _isActivated2 = value;
+                OnPropertyChanged(nameof(IsActivated2));
+            }
+        }
+
         #endregion
 
         #region 界面绑定事件
         public ICommand TestCommand { get; set; }
+        public ICommand SwitchCommand { get; set; }
+        public ICommand DoubleSwitchCommand { get; set; }
         #endregion
 
         #region 属性
@@ -58,10 +83,19 @@ namespace MvvmScaffoldFrame48.ViewModel.ViewModel
         {
             StaticTest = !StaticTest;
         }
+        private void DoubleSwitchButton(object obj)
+        {
+            IsActivated1 = !_isActivated1;
+            IsActivated2 = !_isActivated2;
+        }
+        private void SwitchButton(object obj)
+        {
+            IsActivated2 = !_isActivated2;
+        }
         #endregion
 
         #region 绑定用Predicate方法
-        private bool CanTest(object obj)
+        private bool CanTrue(object obj)
         {
             return true;
         }
@@ -70,7 +104,9 @@ namespace MvvmScaffoldFrame48.ViewModel.ViewModel
         #region 其他方法
         public CustomControlViewModel()
         {
-            TestCommand = new RelayCommand(Test, CanTest);
+            TestCommand = new RelayCommand(Test, CanTrue);
+            DoubleSwitchCommand = new RelayCommand(DoubleSwitchButton, CanTrue);
+            SwitchCommand = new RelayCommand(SwitchButton, CanTrue);
             FormulationItems.Add("1");
         }
         #endregion

+ 27 - 0
MvvmScaffoldFrame48/WPFPage/CustomControlPage.xaml

@@ -129,6 +129,33 @@
                 <Label Content="悬浮窗口:"/>
                 <Button Content="悬浮窗口" Name="FloatBtn" BorderThickness="1" HorizontalAlignment="Right" VerticalAlignment="Top" Width="100" Height="30" Click="FloatBtn_Click"/>
             </StackPanel>
+            <StackPanel Orientation ="Horizontal"  HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,160,0,0">
+                <Label Content="按钮状态切换:"/>
+                <Button Content="双按钮切换" Name="DouBleSwitchBtn" BorderThickness="1" HorizontalAlignment="Right" VerticalAlignment="Top" Width="100" Height="30" Command="{Binding SwitchCommand}">
+                    <Button.Style>
+                        <Style TargetType="Button">
+                            <Setter Property="Background" Value="Blue"/>
+                            <Style.Triggers>
+                                <DataTrigger Binding="{Binding IsActivated1}" Value="True">
+                                    <Setter Property="Background" Value="Red"/>
+                                </DataTrigger>
+                            </Style.Triggers>
+                        </Style>
+                    </Button.Style>
+                </Button>
+                <Button Content="按钮切换" Name="SwitchBtn" BorderThickness="1" HorizontalAlignment="Right" VerticalAlignment="Top" Width="100" Height="30" Command="{Binding DoubleSwitchCommand}">
+                    <Button.Style>
+                        <Style TargetType="Button">
+                            <Setter Property="Background" Value="Blue"/>
+                            <Style.Triggers>
+                                <DataTrigger Binding="{Binding IsActivated2}" Value="True">
+                                    <Setter Property="Background" Value="Red"/>
+                                </DataTrigger>
+                            </Style.Triggers>
+                        </Style>
+                    </Button.Style>
+                </Button>
+            </StackPanel>
         </Grid>
     </Grid>
 </Page>