<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to makw WPF with revit in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/how-to-makw-wpf-with-revit/m-p/8284572#M47421</link>
    <description>&lt;P&gt;Hi Friend,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You could do this :&lt;/P&gt;&lt;PRE&gt;PushButton myButton = CreatePushButton(Panel, "MyFunction", "我的功能");&lt;/PRE&gt;&lt;PRE&gt;private PushButton CreatePushButton(RibbonPanel panel, string name, string text)
{
     if (null == panel)
     {
        return null;
     }
     PushButtonData pushButtonData =  CreatePushButtonData(name, text);
     PushButton pushButton = panel.AddItem(pushButtonData) as PushButton;
     pushButton.LargeImage = LoadImage(name);
     return pushButton;
}

private PushButtonData CreatePushButtonData(string name, string text)
{
     if (null == name || null == text)
     {
          return null;
     }
     string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
     string className = $"{assemblyName}.{name}Command";
     PushButtonData pushButtonData = new PushButtonData(name, text, assemblyFilePath, className);
     return pushButtonData;
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then, create corresponding ExternalCommand:&lt;/P&gt;&lt;PRE&gt;[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] &lt;BR /&gt;[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
public class MyFunctionCommand : IExternalCommand &lt;BR /&gt;{ &lt;BR /&gt;   public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)&lt;BR /&gt;   {&lt;BR /&gt;      var wnd = new MainWindow();&lt;BR /&gt;      wnd.ShowDialog();&lt;BR /&gt;      return Result.Succeeded;&lt;BR /&gt;   } &lt;BR /&gt;}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Wish it is helpful &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Frank Liang&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="名片2.png" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/549022iC63BB78047D6F29E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="名片2.png" alt="名片2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 21 Sep 2018 15:29:46 GMT</pubDate>
    <dc:creator>BIM.Frankliang</dc:creator>
    <dc:date>2018-09-21T15:29:46Z</dc:date>
    <item>
      <title>How to makw WPF with revit</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/how-to-makw-wpf-with-revit/m-p/8283663#M47419</link>
      <description>&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;FONT&gt;大家好！&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;FONT&gt;我想在Revit中使用按鈕創建一個WPF，但在我創建WPF並將Debug / .exe地址放在PussButtonData中後無法執行。&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT&gt;&lt;SPAN&gt;&lt;FONT&gt;單擊按鈕後，&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT&gt;如何執行&lt;/FONT&gt;&lt;SPAN&gt;&lt;FONT&gt;Wpf。&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Revit api&lt;/P&gt;&lt;PRE&gt;#region Namespaces
using System;
using System.Collections.Generic;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System.Windows.Media.Imaging;
#endregion

namespace RevitAddin4
{
    class App : IExternalApplication
    {
        public Result OnStartup(UIControlledApplication a)
        {
            RibbonPanel panel = a.CreateRibbonPanel("TEST");
            PushButtonData data = new PushButtonData("ssss", "hello", @"C:\Users\Haseo\source\repos\WpfApp1\WpfApp1\bin\Debug\WpfApp1.exe", "WpfApp1.MainWindow.xaml.cs");
            PushButton button = panel.AddItem(data) as PushButton;
            Uri uri = new Uri(@"C:\Users\Haseo\Pictures\test.jpg");
            BitmapImage largeImage = new BitmapImage(uri);
            button.LargeImage = largeImage;

            return Result.Succeeded;
        }

        public Result OnShutdown(UIControlledApplication a)
        {
            return Result.Succeeded;
        }
    }
}&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;FONT&gt;WPF&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1
{
    /// &amp;lt;summary&amp;gt;
    /// MainWindow.xaml 的互動邏輯
    /// &amp;lt;/summary&amp;gt;
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("hello");
        }
    }
}&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT&gt;&lt;FONT&gt;誰能給我建議？&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 21 Sep 2018 09:52:58 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/how-to-makw-wpf-with-revit/m-p/8283663#M47419</guid>
      <dc:creator>cxyz278</dc:creator>
      <dc:date>2018-09-21T09:52:58Z</dc:date>
    </item>
    <item>
      <title>Re: How to makw WPF with revit</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/how-to-makw-wpf-with-revit/m-p/8283714#M47420</link>
      <description>&lt;P&gt;&lt;A href="http://thebuildingcoder.typepad.com/blog/wpf" target="_blank"&gt;http://thebuildingcoder.typepad.com/blog/wpf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 21 Sep 2018 10:17:30 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/how-to-makw-wpf-with-revit/m-p/8283714#M47420</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2018-09-21T10:17:30Z</dc:date>
    </item>
    <item>
      <title>Re: How to makw WPF with revit</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/how-to-makw-wpf-with-revit/m-p/8284572#M47421</link>
      <description>&lt;P&gt;Hi Friend,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You could do this :&lt;/P&gt;&lt;PRE&gt;PushButton myButton = CreatePushButton(Panel, "MyFunction", "我的功能");&lt;/PRE&gt;&lt;PRE&gt;private PushButton CreatePushButton(RibbonPanel panel, string name, string text)
{
     if (null == panel)
     {
        return null;
     }
     PushButtonData pushButtonData =  CreatePushButtonData(name, text);
     PushButton pushButton = panel.AddItem(pushButtonData) as PushButton;
     pushButton.LargeImage = LoadImage(name);
     return pushButton;
}

private PushButtonData CreatePushButtonData(string name, string text)
{
     if (null == name || null == text)
     {
          return null;
     }
     string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
     string className = $"{assemblyName}.{name}Command";
     PushButtonData pushButtonData = new PushButtonData(name, text, assemblyFilePath, className);
     return pushButtonData;
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then, create corresponding ExternalCommand:&lt;/P&gt;&lt;PRE&gt;[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)] &lt;BR /&gt;[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
public class MyFunctionCommand : IExternalCommand &lt;BR /&gt;{ &lt;BR /&gt;   public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)&lt;BR /&gt;   {&lt;BR /&gt;      var wnd = new MainWindow();&lt;BR /&gt;      wnd.ShowDialog();&lt;BR /&gt;      return Result.Succeeded;&lt;BR /&gt;   } &lt;BR /&gt;}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Wish it is helpful &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Frank Liang&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="名片2.png" style="width: 400px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/549022iC63BB78047D6F29E/image-size/medium?v=v2&amp;amp;px=400" role="button" title="名片2.png" alt="名片2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 21 Sep 2018 15:29:46 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/how-to-makw-wpf-with-revit/m-p/8284572#M47421</guid>
      <dc:creator>BIM.Frankliang</dc:creator>
      <dc:date>2018-09-21T15:29:46Z</dc:date>
    </item>
  </channel>
</rss>

