Всплывающее окно WPF: Как поместить границу вокруг всплывающего окна?

Было бы возможно использовать 'смежный одноуровневый селектор', если бы эти input был перед label. Просто поместите input перед эти label и затем измените расположение для помещения label перед input. Вот пример:

<head runat="server">
    <title></title>
    <style type="text/css">
    input:focus + label {font-weight: bold}
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div style="direction:rtl">
        <input type="text" id="username" />
        <label for="username">Username:</label>
    </div>
    <div style="direction:rtl">
        <input type="password" id="password" />
        <label for="password">Password:</label>
    </div>
    </form>
</body>

(Это - своего рода взлом, я лично использовал бы JavaScript, чтобы сделать это)

input:focus + label {font-weight: bold}
<form id="form1" runat="server">
  <div style="direction:rtl">
    <input type="text" id="username" />
    <label for="username">Username:</label>
  </div>
  <div style="direction:rtl">
    <input type="password" id="password" />
    <label for="password">Password:</label>
  </div>
</form>
14
задан Dave Clemmer 16 August 2011 в 16:28
поделиться

3 ответа

Спасибо, в итоге я придал ему трехмерный (вряд ли) вид, установив границу, например:

 <Border BorderBrush="White" BorderThickness="3,3,0,0">
            <Border BorderBrush="Black" BorderThickness="1,1,3,3">
</Border>
</Border>

Выглядит довольно прилично!

4
ответ дан 1 December 2019 в 06:35
поделиться
<Popup PopupAttributes="SetByYou">
 <Border BorderAttribute="SetByYou">
  <!-- Content here -->
 </Border>
</Popup>
10
ответ дан 1 December 2019 в 06:35
поделиться

Очевидно, что всплывающие окна в настоящее время не поддерживают drop shadows, см. ссылку.

Однако я придумал обходной путь, который работает довольно хорошо IMO. В основном идея заключается в том, чтобы иметь холст, вложенный в другой прозрачный холст, и просто применить падающую тень к вложенному холсту. Все просто. Вот пример:

        <Grid>
        <TextBox x:Name="MyTxtBx" Width="50" 
                 Height="20" Text="Hello"/>
        <Popup IsOpen="True" Width="200" Height="100" 
               PlacementTarget="{Binding ElementName=MyTxtBx}" 
               AllowsTransparency="True" >
            <Canvas Background="Transparent">
                <Canvas Background="Green" Width="150" Height="50">
                    <Canvas.BitmapEffect>
                        <DropShadowBitmapEffect Softness=".5" 
                                                ShadowDepth="5" 
                                                Color="Black"/>
                    </Canvas.BitmapEffect>
                    <Label Content="THIS IS A POPUP TEST"/>
                </Canvas>
            </Canvas>
        </Popup>
    </Grid>

Следует отметить, что размер вложенного холста должен быть меньше размера его контейнера. Также должно быть установлено значение AllowsTransparency.

5
ответ дан 1 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: