Language detail: XAML

Coverage: 3.05%
number of '+' ratings
contribution for coverage

Unsolved challenges

codes

Feed

Used modules

ダブルクリックの取得 (Nested Flatten)
XAMLでは、x:Code要素を用いて、直接C#やVB.NETのコードの埋め込みが可能です。というより、残念ながら、XAMLだけで座標の取得する方法が考えつかなかったので、コード埋め込みを使ったというほうが正確です。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ダブルクリックの検出"
    Width="300"
    Height="300"
    MouseDoubleClick="Window_MouseDoubleClick"
    >
    <x:Code>
        <![CDATA[
        private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            MessageBox.Show(this, "ダブルクリックされました: " + e.GetPosition(this).ToString());
        }
        ]]>
    </x:Code>
</Window>
HTTPでGET (Nested Flatten)

今回もLoose XAMLではありません、要コンパイルです。OSタグとしてWindowsを付けていないのはわざとです。かといって、Widnows以外でWPFが使える環境も現時点ではないでしょうから、OS非依存も付けられないという中途半端な状態です。ごめんなさい。

1
2
3
4
5
6
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="XMLから情報を取り出す">
    <WebBrowser Source="http://ja.doukaku.org/feeds/comments/"/>
</Window>
XMLから情報を取り出す (Nested Flatten)
今回はLoose XAMLではありません。外部へのアクセスはLoose XAMLだと権限不足で不可です。「dataという変数に代入されているとします」とありますが、XmlDataProvider要素がそれです。XmlDataProvider型の変数data (x:Key="data"より)と思ってください、WpfApplication1.Window1クラスのフィールド(メンバ変数)のような寿命を持ちます(口から出任せ)。あとはバインディングでXPath指定してlastBuildDateの中身を取り出すだけです。
1
2
3
4
5
6
7
8
9
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="XMLから情報を取り出す">
    <Window.Resources>
        <XmlDataProvider x:Key="data" Source="http://ja.doukaku.org/feeds/comments/" XPath="/"/>
    </Window.Resources>
    <Label Content="{Binding Source={StaticResource data}, XPath=//lastBuildDate}"/>
</Window>
クリップボードへの転送 (Nested Flatten)
XAML/WPFのコマンドという仕組みを使えば、TextBoxなど一部のコントロールに限りながら、C#またはVBなどによるコーディング無しにコピーを実装できます。もちろん、コマンドへの応答はC#/VBソース内での処理も可能です。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="編集(_E)">
                <MenuItem Command="Copy"/>
            </MenuItem>
        </Menu>
        <TextBox/>
    </DockPanel>
</Page>
Hello, world! (Nested Flatten)
Loose XAMLです。.NET Framework 3.0のある環境で、このコードを拡張子xamlで保存すれば、ダブルクリックすると表示できます。
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Label
        FontSize="36pt"
        HorizontalContentAlignment="Center"
        VerticalContentAlignment="Center">Hello, wrold!</Label>
</Page>
ウィンドウの表示 (Nested Flatten)
100x75だと「こんにち...」になっちゃうけど許して(笑)。
1
2
3
4
5
<Window x:Class="Window.Konnichiwa"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="こんにちは、GUI!" Width="100" Height="75" WindowStartupLocation="CenterScreen" WindowStyle="ToolWindow">
</Window>
XAMLでGUI!
1
2
3
4
5
6
7
8
<Window x:Class="Window.Konnichiwa"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Doukaku" Width="100" Height="75" WindowStartupLocation="CenterScreen" WindowStyle="ToolWindow">
  <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
    <TextBlock FontSize="8">こんにちは、GUI!</TextBlock>
  </StackPanel>
</Window>

Index

Feed

Other

Link

Pathtraq

loading...