1. 程式人生 > >POPUP + 控制元件重寫 + 從屬關係資料繫結

POPUP + 控制元件重寫 + 從屬關係資料繫結

<Button  Content="Restore" Style="{StaticResource RESTORE}" cal:Message.Attach="[Event Click] = [Action Pop($view,$eventArgs)]" />



  <Style x:Key="RESTORE" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button"
> <Grid> <Border Background="#01FFFFFF" > <Image Source="/Projects_Manager;component/Image/addres.png" Height="30" Width="30" Cursor="Hand" ToolTipService.ToolTip="yyy"/> <!--<TextBlock Text
="{TemplateBinding Content}" FontSize="12"/>--> </Border> <Popup IsOpen="{Binding IsPop1Open, Mode=TwoWay}" x:Name="pop1" HorizontalOffset="{Binding PopW1Offset, Mode=TwoWay}" VerticalOffset="{Binding PopH1Offset, Mode=TwoWay}" Canvas.ZIndex="1"
> <!--Placement="Bottom" StaysOpen="False" Focusable="False" AllowsTransparency="True" PopupAnimation="Slide">--> <Border> <StackPanel> <Border Background="White" BorderBrush="LightGray" BorderThickness="1" Width="400"> <StackPanel Margin="10" Orientation="Vertical"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <StackPanel Grid.Column="0" Orientation="Horizontal"> <TextBlock Text="yyy:" Foreground="Black" Margin="0,5"/> <TextBox Text="{Binding NRestore_Name, Mode=TwoWay}" Width="110" Margin="10,5" VerticalAlignment="Center" /> </StackPanel> <StackPanel Grid.Column="1" Orientation="Horizontal"> <TextBlock Text="yyy:" Foreground="Black" Margin="0,5"/> <TextBox Text="{Binding NRestore_Time, Mode=TwoWay}" Width="110" Margin="10,5" VerticalAlignment="Center" /> </StackPanel> </Grid> <StackPanel Orientation="Horizontal"> <TextBlock Text="yyy:" Foreground="Black" Margin="0,5"/> <TextBox Text="{Binding NClose_Version, Mode=TwoWay}" Width="150" Margin="10,5" VerticalAlignment="Center" HorizontalAlignment="Left" /> </StackPanel> <TextBlock Text="yyy:" Foreground="Black" Margin="0,5"/> <TextBox Text="{Binding NRestore_Cause, Mode=TwoWay}" AcceptsReturn="True" Width="370" TextWrapping="Wrap" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Height="30" HorizontalAlignment="Left"/> <TextBlock Text="yyy:" Foreground="Black" Margin="0,5"/> <TextBox Text="{Binding NRestore_Way, Mode=TwoWay}" AcceptsReturn="True" Width="370" TextWrapping="Wrap" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Height="30" HorizontalAlignment="Left"/> <StackPanel Orientation="Horizontal" Margin="5" HorizontalAlignment="Center"> <Button Width="50" Height="20" Content="提交" Margin="0,5,20,5" cal:Message.Attach="[Event Click]=[Action PopSubmit($view,$eventArgs,pop1)]" /> <Button Width="50" Height="20" Content="取消" Margin="0,5,0,5" cal:Message.Attach="[Event Click]=[Action PopClose($view,$eventArgs,pop1)]" /> </StackPanel> </StackPanel> </Border> </StackPanel> </Border> </Popup> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
public void Pop(object sender, RoutedEventArgs e)
        {

            Button btn = (sender as Button);
            var vm = (TestProperty)btn.DataContext;
            switch (Project.Pop2)
            {
                case false:

                    vm.PopW2Offset = -430;
                    vm.IsPop2Open = true;
                    Project.Pop2 = true;
                    return;
                case true:
                    vm.IsPop2Open = false;
                    Project.Pop2 = false;
                    return;
                default: break;
            }
        }